在 HTTP 响应后保持 PHP 执行活动
在 PHP 作为 Apache 的 mod_php 运行的环境中,在 HTTP 响应后维持 PHP 执行会出现一个常见的挑战向客户端发送 HTTP 响应。这个限制源于需要在特定的超时时间内向应用程序报告错误消息。
要解决这个问题,关键在于在不中断正在进行的操作的情况下尽早发送 HTTP 响应。一种有效的方法涉及利用以下代码片段:
ob_end_clean(); header("Connection: close"); ignore_user_abort(); // optional ob_start(); echo ('Text the user will see'); $size = ob_get_length(); header("Content-Length: $size"); ob_end_flush(); flush(); session_write_close(); // Added per suggestion // Do processing here sleep(30); echo('Text user will never see');
此代码片段最初会刷新所有待处理的输出并将 HTTP 连接配置为关闭。通过忽略用户发起的中止尝试并指定内容长度,可以有效地调度 HTTP 响应。随后可以执行正在进行的处理,例如数据库操作或发送电子邮件。
通过这种方法,PHP 可以向客户端发送完整的 HTTP 响应,并在指定的时间内继续执行,有效解决问题外部应用程序施加的错误报告限制。这种方法在必须在不超过预定超时的情况下执行耗时操作的场景特别有用。
以上是在向客户端发送 HTTP 响应后,如何保持 PHP 执行?的详细内容。更多信息请关注PHP中文网其他相关文章!