【问题标题】:Can a PHP script continue running after ending the HTTP request?结束 HTTP 请求后 PHP 脚本能否继续运行?
【发布时间】:2010-11-28 12:55:42
【问题描述】:

如何编写一个继续运行的 PHP 脚本,即使在清除一些文本并结束 HTTP 请求之后也是如此?这可能吗?

【问题讨论】:

标签: php http scripting webserver


【解决方案1】:

您可能对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等限制。

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

【讨论】:

    【解决方案2】:

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

    ignore_user_abort(true);
    
    set_time_limit(0);
    

    【讨论】:

    • 如果页面被频繁请求似乎不安全,服务器可能有大量进程无所事事。
    猜你喜欢
    • 2010-11-29
    • 2013-10-16
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 2011-12-25
    • 2023-01-27
    • 2021-10-11
    • 2014-12-17
    相关资源
    最近更新 更多