这取决于。
从http://us3.php.net/manual/zh/features.connection-
handling.php:
当PHP脚本正常运行时,NORMAL状态处于活动状态。如果远程客户端断开连接,则ABORTED状态标志将打开。远程客户端断开连接通常是由用户按下STOP按钮引起的。
您可以决定是否希望客户端断开连接以导致脚本中止。有时,即使没有远程浏览器接收到输出,始终将脚本运行至完整状态也很方便。但是,默认行为是当远程客户端断开连接时脚本将中止。可以通过
ignore_user_abortphp.ini指令以及相应的php_value ignore_user_abortApache httpd.conf指令或通过ignore_user_abort()函数来设置此行为 。
这似乎表示您问题的答案是“是的,如果用户离开页面,脚本将终止”。
但是请意识到,根据所使用的后端SAPI(例如
mod_php),php无法检测到客户端已中止连接,直到尝试向客户端发送信息为止。如果长时间运行的脚本没有发出
flush(),即使用户已关闭连接,该脚本也可能继续运行。
事情复杂是,即使你 做的
到的问题定期调用
flush(),其输出缓冲,将导致捕获这些电话,并直到脚本完成反正不会送他们到客户端!
进一步
复杂化的事情是,如果你已经安装了Apache处理程序缓存的响应(例如
mod_gzip),然后再次PHP将无法检测到连接被关闭,该脚本将继续卡车。
ew



