在HTTP 回應後保持PHP 執行活動
在PHP 作為Apache 的mod_php 運作的環境中,在HTTP 執行回應後維持PHP 執行回應後維持PHP 執行回應後維持PHP 執行回應後維持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中文網其他相關文章!