首頁 >後端開發 >php教程 >如何在 PHP 中傳送 HTTP 回應並繼續執行長時間運行的進程?

如何在 PHP 中傳送 HTTP 回應並繼續執行長時間運行的進程?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-16 12:30:03336瀏覽

How to Send HTTP Responses in PHP and Continue Execution for Long-Running Processes?

在PHP 中發送HTTP 回應並繼續執行

當面對超過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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn