PHP脚本启动了,当我在浏览器中点击回来会发生什么?

时间:2011-11-27 21:28:31

标签: php browser

我已经在我的网络浏览器中启动了这个PHP脚本。它读取大量数据并将其写入数据库。 发生了什么

  1. 当我在浏览器中单击“返回”(或转到其他链接/页面)时?

  2. 关闭网络浏览器? 脚本会在后台运行直到它完成吗?

1 个答案:

答案 0 :(得分:8)

除非设置了php.ini设置ignore_user_abort(默认情况下禁用),否则它应该继续运行直到完成。由于ignore_user_abort默认情况下处于禁用状态,因此默认的PHP行为是在完成之前终止脚本,如果它检测到用户已经离开。要更改此设置,请在脚本开头调用ignore_user_abort(true);

也就是说,在稍微短暂的脚本中,即使用户在几秒钟之前断开连接,PHP也可能无法检测到用户已经消失,直到处理完成。

请参阅ignore_user_abort(),其中有一个示例脚本,表明在用户断开连接后它将继续运行。

另请注意,PHP will not detect that the user has aborted the connection until an attempt is made to send information to the client. Simply using an echo statement does not guarantee that information is sent, see flush()

如果您已启动会话,则在脚本完成运行之前可能无法关闭(解锁)会话文件,因此尝试启动会话的同一用户将来的页面加载可能会挂起,直到具有会话锁定的脚本完成。为避免这种情况,如果您计划在较长时间内运行脚本,则可以在不再需要会话信息时调用session_write_close

您对connection handling in php的引用也应该感兴趣。