2011-05-02 157 views
6

我使用PHP運行Apache的標準配置。 我想知道當客戶端請求一個導致PHP腳本執行的頁面時,會發生什麼情況,然後客戶端在腳本結束之前殺死來自服務器的請求。 Apache會以某種方式殺死腳本,還是允許它完成?當HTTP連接死亡時,apache執行的PHP腳本是否被殺死?

+0

該腳本將被允許完成。 – meagar 2011-05-02 16:22:02

+0

@meager:不,請參閱我的回答。 – 2011-05-02 16:28:09

回答

8

documentation答案是:

當PHP腳本正常運行 在正常狀態下,是有效的。 如果 遠程客戶端斷開連接,則會打開狀態標誌ABORTED 。遠程 客戶端斷開連接通常是由 用戶點擊其STOP按鈕引起的。如果 PHP規定的時間限制(請參閱 set_time_limit())被命中,則狀態標誌TIMEOUT 已打開。

您可以決定是否要 客戶端斷開連接,導致您的 腳本中止。有時候,即使沒有 遠程瀏覽器接收到輸出,也可以使用 來始終讓腳本運行 。 然而, 默認行爲是 遠程客戶端斷開連接時腳本被中止。 此 行爲可以通過 ignore_user_abort php.ini指令被設定爲 以及通過對應 php_value ignore_user_abort阿帕奇 的httpd.conf指令或與 ignore_user_abort()函數。如果您 不告訴PHP忽略用戶中止 並且用戶中止,您的腳本將終止 。

如果你想告訴遠程客戶端腳本完成,但仍然繼續請求後處理,看this question/answer