2010-06-08 58 views
2

我想知道通过Ajax调用PHP脚本的生命周期。假设服务器上有一个长时间(即30秒)的PHP脚本,并且该页面是通过Ajax加载的。在脚本完成之前,用户关闭浏览器。脚本是否继续运行完成,是否终止,或者这是服务器本身的功能(我正在运行Apache fwiw)。谢谢你的帮助。PHP,Ajax和请求的生命周期

回答

1

该脚本将继续运行。关闭客户端上的浏览器不会通知服务器停止处理请求。

+0

谢谢。这是我所希望的答案。对于我的要求,我应该更具体一些。谢谢! – Dave 2010-06-09 00:07:04

+1

-1,因为,那是错误的。一个脚本通常会继续运行,因为它没有得到非连接的消息/退出,这是因为HTTP中的“断开”连接的宽大度非常长,并且作为无状态协议,它只能通过尝试发送来检测数据。大多数基于Web的脚本在超时发生之前就已经完成。注意另一个'ignore_user_abort'提到是否让脚本保持运行非常重要,但即使如此,Web服务器本身也可能决定终止它。 – Wrikken 2010-06-09 01:12:04

+0

谢谢Wrikken,注意我说“将继续运行”而不是“将继续运行到完成”。正如你所说“脚本通常保持运行”。欢呼 – Jacob 2010-06-09 01:23:14

0

如果你有一个耗时的脚本,那么我会建议将它分成块。好多这样

3

这可能会感兴趣:ignore_user_abort()

ignore_user_abort - 设置客户端断开连接是否应该中止脚本执行

但是注意

PHP将无法检测用户已中止连接,直到试图向客户端发送信息。