发送响应后继续执行 PHP
在 PHP 脚本接收传入消息、处理该消息并将响应发送到的场景中对于请求服务器,发送初始响应后需要继续执行 PHP 脚本。这变得具有挑战性,因为服务器通常在收到 HTTP 200 响应时将消息标记为已送达。
避免数据库存储和 Cron 作业
而不是诉诸于将消息存储在一个数据库并依赖一个 cron 作业,有一个更直接的解决方案。这涉及发送 HTTP 200 响应,然后继续执行 PHP 脚本。
PHP 脚本实现
要实现此解决方案,请在 PHP 脚本中执行以下步骤:
ignore_user_abort(true); // Not required but can prevent premature termination set_time_limit(0); ob_start(); // Perform initial processing here echo $response; // Send the response header('Connection: close'); header('Content-Length: '.ob_get_length()); ob_end_flush(); @ob_flush(); flush(); fastcgi_finish_request(); // Required for PHP-FPM (PHP > 5.3.3) // Continue script execution // ... die(); // End the script especially when set_time_limit=0 is used and the task is complete
此代码序列允许脚本发送响应,但 PHP 进程继续运行。如果需要,您可以执行其他处理、任务或发送其他响应。最后调用 die() 来终止脚本并释放资源非常重要。
以上是发送 HTTP 响应后如何继续执行 PHP 脚本?的详细内容。更多信息请关注PHP中文网其他相关文章!