2016-06-29 90 views
1

我正在玩弄使用ini_set('ignore_user_abort', true/false);來允許或禁止PHP腳本在服務器上繼續運行,即使客戶端已經離開(即遠離頁面導航)。當我將其設置爲false時,如果用戶導航,腳本會立即停止執行。在腳本結束之前是否有任何方法來運行函數?PHP - 頁面中止時運行函數

如果用戶導航,我基本上要優雅地關閉幾件事情,並將記錄插入數據庫。

+0

導航離開和'放棄'是不一樣的,如果腳本完成,並且用戶導航離開,而不是在腳本運行時離開。 PHP是服務器端,通常腳本都是在用戶看到頁面之前完成的。 –

+0

腳本啓動後頁面加載ajax,它就像一個5分鐘的腳本,使用TRUE它會繼續運行,即使用戶關閉標籤(測試) – Crizly

+0

以及ajax,這是不同的,原始問題的細節將**真的**幫助 –

回答

2

ignore_user_abort設置爲true,然後使用connection_aborted()來檢查用戶是否中止。一個可能的地方檢查可能是shutdown callback

+0

我不認爲這將工作,因爲在用戶中止後,服務器也會中止,您的代碼將無法運行。可能最好的做法是在決定是否清理並退出或繼續處理之前檢查'connection_aborted()'。似乎沒有辦法爲中止事件註冊回調函數。 (編輯)看到了你的回覆 - 沒關係。 –

+0

@JuanTomas不,在'ignore_user_abort'設置爲'true'時,服務器不應該在客戶端執行時中止。 – Schlaus

+0

好的,它在你的編輯。 'register_shutdown_function()來'。 +1 –