结束HTTP请求后,PHP脚本是否可以继续运行?

时间:2009-09-15 16:50:53

标签: php http scripting webserver

如果刷新一些文本并结束HTTP请求,我如何编写一个继续运行的PHP脚本?这可能吗?

2 个答案:

答案 0 :(得分:5)

永远运行PHP应用程序或直到php终止

ignore_user_abort(true);

set_time_limit(0);

答案 1 :(得分:4)

您可能对ignore_user_abort配置指令和/或ignore_user_abort函数感兴趣:

  

设置客户端是否断开连接   应该导致脚本中止。

使用它,您可以:

  • 生成必须发送到浏览器的页面部分
  • 使用flush和/或ob_flush
  • 刷新输出
  • 致电ignore_user_abort (现在或之前)
  • 做更多工作

用户的浏览器可能仍会显示“正在等待”或“正在加载”,但页面内容将被加载并显示 - 即使用户按下“停止”,您的脚本也应继续执行。

有关更多信息,该功能的手册页面上有一个示例 - 您可以查看这篇文章:How to Use ignore_user_abort() to Do Processing Out of Band


当然,虽然这可以用于一些轻过程(比如在页面末尾“清理”东西,尽可能快地向用户显示),你仍然会受max_execution_time之类的限制。

因此,这不是一个应该用于长/重计算的解决方案。