當面對超過Web 應用程式超時的耗時操作時,開發人員經常尋求解決方案以在HTTP之外繼續執行PHP響應傳遞。在這種特殊情況下,挑戰是使 PHP 能夠及時傳輸完整的 HTTP 回應,同時在規定的一分鐘時間範圍內啟動並完成資料庫和電子郵件處理。
最簡單的方法是利用 ob_end_flush( ) 和flush() 具有策略性的功能。透過終止輸出緩衝過程並釋放 HTTP 標頭以及使用者可見的文本,腳本有效地向客戶端發出回應已完成的訊號。
以下是示範此方法的範例程式碼片段:
ob_end_clean(); header("Connection: close"); ignore_user_abort(); // Disable abort ob_start(); echo ('Success message for the user'); $size = ob_get_length(); header("Content-Length: $size"); ob_end_flush(); // Flush the initial content flush(); // Ensure proper flushing session_write_close(); // Delegate time-consuming tasks here sleep(30); echo('Tasks completed after 30 seconds');
透過此方法,腳本會通知客戶端操作成功並啟動後續耗時的任務,而不會導致應用程式超時。
以上是如何在 PHP 中傳送 HTTP 回應並繼續執行長時間運行的進程?的詳細內容。更多資訊請關注PHP中文網其他相關文章!