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