我正在通过ajax调用php脚本来做一些数据库维护。如果用户关闭页面、返回或单击链接,php脚本会被完全执行吗?有办法做到这一点吗?
也许如果php脚本调用exec()
方法或类似的方法,这反过来会通过控制台调用脚本:
$ php /var/www/httpdocs/maintenance.php
发布于 2012-01-19 04:10:17
只要用户代理(浏览器等)已经完全发送了请求,服务器就拥有了它需要的所有东西,并将完成请求并尝试发回响应。
事实上,这种"pinging“行为通常用于”心跳“-like进程,这些进程使服务保持温暖或执行定期维护。
发布于 2012-01-19 04:10:27
这是一种竞争条件。PHP会在某个时刻(通常在尝试输出时)检测到Apache当着它的面大喊大叫,说远程用户关闭了连接。在这一点上,您是否完成了所有想要做的事情,这取决于代码的结构。
如果希望确保在脚本自动关闭之前完成所有操作,请使用ignore_user_abort(TRUE)
,它会在连接断开后保持运行。它仍然受到用户max_execution_time限制和诸如此类的限制,但它不会因为您断开连接而关闭。
发布于 2012-01-19 04:10:23
一旦web请求到达您的服务器,用户是否关闭浏览器或离开都无关紧要。您的服务器仍会响应,但没有人会监听响应。
https://stackoverflow.com/questions/8916690
复制相似问题