当HTTP连接死亡时,apache执行的PHP脚本是否被杀死?

当HTTP连接死亡时,apache执行的PHP脚本是否被杀死?

问题描述:

我使用PHP运行Apache的标准配置。 我想知道当客户端请求一个导致PHP脚本执行的页面时,会发生什么情况,然后客户端在脚本结束之前杀死来自服务器的请求。 Apache会以某种方式杀死脚本,还是允许它完成?当HTTP连接死亡时,apache执行的PHP脚本是否被杀死?

+0

该脚本将被允许完成。 – meagar 2011-05-02 16:22:02

+0

@meager:不,请参阅我的回答。 – 2011-05-02 16:28:09

documentation答案是:

当PHP脚本正常运行 在正常状态下,是有效的。 如果 远程客户端断开连接,则会打开状态标志ABORTED 。远程 客户端断开连接通常是由 用户点击其STOP按钮引起的。如果 PHP规定的时间限制(请参阅 set_time_limit())被命中,则状态标志TIMEOUT 已打开。

您可以决定是否要 客户端断开连接,导致您的 脚本中止。有时候,即使没有 远程浏览器接收到输出,也可以使用 来始终让脚本运行 。 然而, 默认行为是 远程客户端断开连接时脚本被中止。 此 行为可以通过 ignore_user_abort php.ini指令被设定为 以及通过对应 php_value ignore_user_abort阿帕奇 的httpd.conf指令或与 ignore_user_abort()函数。如果您 不告诉PHP忽略用户中止 并且用户中止,您的脚本将终止 。

如果你想告诉远程客户端脚本完成,但仍然继续请求后处理,看this question/answer