此查詢解決了在完成 PHP 腳本之前關閉連線的挑戰。目標是透過 AJAX 啟動一個冗長的過程,但傳回一個指示其開始的回應,而不等待 PHP 腳本完成。
根據 PHP 手冊,終止 TCP 連接而不結束 PHP 腳本涉及到更多只是發送一個「關閉」標頭。使用者註釋#71172(2006 年11 月)提供了一個全面的解決方案:
<?php ob_end_clean(); header("Connection: close"); ignore_user_abort(true); ob_start(); echo('Text the user will see'); $size = ob_get_length(); header("Content-Length: $size"); ob_end_flush(); flush(); // Do processing here sleep(30); echo('Text user will never see'); ?>
要讓該解決方案發揮作用,禁用輸出緩衝、清除緩衝區,然後發送標頭資訊至關重要。雖然發送“close”標頭是必要的,但立即關閉連接還不夠。
後續使用者註釋#89177(2009 年 2 月)和#93441(2009 年 9 月)提供了更多有關連接處理和連接的見解。幫助闡明 PHP 中早期連接關閉的細微差別。
以上是如何在透過 AJAX 啟動長時間運行的進程後提前關閉 PHP 連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!