响应调度后执行 PHP
PHP 脚本经常需要在响应服务器请求后进一步处理数据。其中一种场景涉及处理传入消息参数(“ID_OF_MESSAGE”和“TEXT_OF_MESSAGE”)并生成带有“ANSWER_TO_ID”和“RESPONSE_MESSAGE”参数的响应。
但是,向服务器发送 HTTP 200 响应将立即标记在服务器端传递的消息。这带来了一个困境,因为立即响应生成至关重要。
要克服这个问题,您可以:
ignore_user_abort(true); //optional set_time_limit(0); ob_start(); // Handle initial processing 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 processing after request dispatch die(); // Ensure script termination
通过设置ignore_user_abort()和set_time_limit(0),脚本可以无限期地继续执行。 ob_* 函数立即发送响应标头和正文。 die() 语句终止脚本,这是防止使用 set_time_limit(0) 时无限执行所必需的。
此技术允许您处理传入请求、发送响应并继续处理 PHP 脚本,而无需等待让浏览器收到完整的响应。
以上是发送HTTP响应后如何执行PHP代码?的详细内容。更多信息请关注PHP中文网其他相关文章!