發送回應後處理PHP
當從伺服器接收帶有訊息ID 和文字的請求時,腳本通常需要處理資訊並生成響應。但是,立即發送回應可能會將伺服器訊息標記為已發送,從而阻止進一步處理。對於需要立即產生回應但正在進行後端操作的應用程式來說,這可能是一個問題。
解決方案:使用輸出緩衝進行延遲處理
為了解決此問題,有一種已知的技術因為可以使用輸出緩衝。此方法涉及以下步驟:
-
啟用延遲執行:
- 呼叫ignore_user_abort(true)以防止使用者操作中斷script.
- 設置set_time_limit(0)以刪除任何時間
-
緩衝響應輸出:
-
發送部分回應:
- 處理必要的資料並產生初始回應,然後使用迴聲$r esponse.
-
刷新輸出標頭:
-
發送以下標頭:
Connection: close 表示回應結束後連線將關閉已傳送。
Content-Length: .ob_get_length()` 指定緩衝輸出的長度。
-
- 完整回應傳輸:
-
- 致電ob_end_flush() 和 ob_flush(緩衝的輸出。
呼叫flush()將剩餘的輸出傳送到瀏覽器。
- 對於 PHP-FPM (PHP > 5.3.3 ),呼叫fastcgi_finish_request()來完成請求。
腳本現在可以在將回應傳送到brow ser.
為了確保執行完成,請使用die() 明確終止腳本,特別是當使用 set_time_limit=0 時。 這種技術使腳本在後台運行,這可能會消耗伺服器資源。
以上是發送即時回應後如何進行背景 PHP 處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!