回應調度後執行 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中文網其他相關文章!