2011-11-27 53 views

回答

8

應該繼續運行,直到完成,除非php.ini中ignore_user_abort設置(默認禁用)。由於默認情況下ignore_user_abort被禁用,因此默認的PHP行爲是在完成之前終止腳本,前提是它檢測到用戶已離開。要改變這種情況,請在腳本的開始處撥打ignore_user_abort(true);

這就是說,在一些短暫的腳本中,PHP可能無法檢測到用戶已經離開,直到處理完成,即使用戶早幾秒鐘斷開連接。

請參閱ignore_user_abort()它有一個示例腳本,顯示它將在用戶斷開連接後繼續運行。

另請注意,PHP will not detect that the user has aborted the connection until an attempt is made to send information to the client. Simply using an echo statement does not guarantee that information is sent, seeflush()

如果您已啓動會話,則會話文件可能不會被關閉(解鎖),直到腳本完成運行,以便同一用戶嘗試啓動會話的未來頁面可能會掛起,直到具有會話鎖定的腳本完成。爲了避免這種情況,如果您計劃長時間運行腳本,可以在不再需要會話信息時調用session_write_close

此參考文獻connection handling in php也應該引起您的興趣。

+0

感謝您的回答! –

+0

+1優秀的回答覆蓋面 –

相關問題