我有 2 页。一种是 form.php 和 ajaxprocessing.php
当用户单击 form.php 上的提交按钮时,它将使用 ajax 调用 ajaxprocessing.php。这个 ajaxprocessing.php 有一个说 50,000 次的循环来执行数据库插入查询或某些功能。
我的问题是,即使用户单击 form.php 中的提交按钮并关闭浏览器或关闭 PC,ajaxprocessing.php 是否仍会继续在服务器中执行?
它在幕后如何运作?
默认情况下,如果客户端断开连接,PHP 执行将终止。因此,如果您的 ajax 调用超时或断开连接,那么 PHP 将停止运行。可以通过打开配置设置来更改此行为ignore_user_abort
。
从 php.ini 中的评论:
; 如果启用,即使用户中止,请求也将被允许完成
;请求。如果执行长请求,请考虑启用它,这可能会结束
;被用户打断或浏览器超时。PHP 的默认行为
;是禁用此功能。
; http://php.net/ignore-user-abort
测试脚本是否继续运行的一种方法是在 PHP 脚本的底部插入类似这样的内容。
mail('your@email.com', 'Script done', 'The script is now done');
这将在脚本完成后向您发送一封电子邮件 - 如果 sendmail 安装在原因服务器上。这样,您将知道关闭浏览器后脚本是否继续运行。