2010-06-08 80 views
2

我想知道通過Ajax調用PHP腳本的生命週期。假設服務器上有一個長時間(即30秒)的PHP腳本,並且該頁面是通過Ajax加載的。在腳本完成之前,用戶關閉瀏覽器。腳本是否繼續運行完成,是否終止,或者這是服務器本身的功能(我正在運行Apache fwiw)。謝謝你的幫助。PHP,Ajax和請求的生命週期

回答

1

該腳本將繼續運行。關閉客戶端上的瀏覽器不會通知服務器停止處理請求。

+0

謝謝。這是我所希望的答案。對於我的要求,我應該更具體一些。謝謝! – Dave 2010-06-09 00:07:04

+1

-1,因爲,那是錯誤的。一個腳本通常會繼續運行,因爲它沒有得到非連接的消息/退出,這是因爲HTTP中的「斷開」連接的寬大度非常長,並且作爲無狀態協議,它只能通過嘗試發送來檢測數據。大多數基於Web的腳本在超時發生之前就已經完成。注意另一個'ignore_user_abort'提到是否讓腳本保持運行非常重要,但即使如此,Web服務器本身也可能決定終止它。 – Wrikken 2010-06-09 01:12:04

+0

謝謝Wrikken,注意我說「將繼續運行」而不是「將繼續運行到完成」。正如你所說「腳本通常保持運行」。歡呼 – Jacob 2010-06-09 01:23:14

0

如果你有一個耗時的腳本,那麼我會建議將它分成塊。好多這樣

3

這可能會感興趣:ignore_user_abort()

ignore_user_abort - 設置客戶端斷開連接是否應該中止腳本執行

但是注意

PHP將無法檢測用戶已中止連接,直到試圖向客戶端發送信息。