执行 PHP 操作发送 HTTP 响应
在 PHP 5.2 中,当作为 mod_php 运行时,发送 HTTP 响应可能会中断长时间运行的数据库请求和电子邮件处理。为了解决这个问题,可以利用一种技术,允许 PHP 向客户端发送完整的 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(); // Strange behaviour, will not work flush(); // Unless both are called ! session_write_close(); // Added a line suggested in the comment // Do processing here sleep(30); echo('Text user will never see');
执行后,脚本立即向客户端发送完整的 HTTP 响应。然后,它开始在后台处理数据库请求和电子邮件,这可能需要长达一分钟的时间。请注意,一旦发送响应,用户交互将被切断。
以上是如何在发送 HTTP 响应后运行 PHP 操作?的详细内容。更多信息请关注PHP中文网其他相关文章!