我有一個頁面,用戶可以啓動後臺進程。如果用戶刷新頁面或關閉標籤或瀏覽器,我想停止此過程。試過connection_abort()
,但沒有運氣,劇本剛剛開始運行。 任何想法?停止一個PHP後臺進程
2
A
回答
0
0
如果您對用戶的唯一標識符,這樣就可以追平或進程ID一起存儲,以下邏輯可以工作:
- 用戶請求頁面
- 用戶被賦予一個唯一的id
- 後臺進程啓動並且它的id與用戶標識一起被登錄到數據庫
- 進程不斷檢查數據庫 - 以選定的頻率 - 檢查數據庫中的記錄,如果它不存在或者不像預期的那樣,該過程自行停止。
- 然後,你必須爲用戶無論前端既可以:
- 觸發腳本(即stop_process.php用戶= ID?)通過AJAX時,它需要 - 即當頁面導航離開。由於onbeforeunload阻止或停止某些瀏覽器中的Ajax請求,因此此方法可能不可靠。
- 有一個ajax輪詢腳本,不斷更新帶有時間戳的數據庫中的流程記錄,如果這個戳記過期 - 意味着用戶已經導航或停止了js - 那麼過程停止。
以上是一個相當複雜的解決方案(也可能氣質,因爲它依賴於JavaScript)所以也許應該只有在真正需要或認爲如果目標觀衆可以被鎖定。
作爲非js解決方案,您可以依賴輪詢方法並設置元刷新幀。然而,這可能會讓老版本的Internet Explorer用戶瘋狂地持續「點擊」。更不用說這個解決方案相當不雅。
相關問題
- 1. 鈦 - 無法停止iOs後臺進程
- 2. Unix的後臺進程異常停止
- 3. 如何最好的告訴一個後臺PHP程序停止
- 4. 創建一個後臺PHP進程
- 5. PHP後臺進程
- 6. PHP後臺進程
- 7. PHP後臺進程
- 8. NSTimer在應用程序進入後臺後不會停止
- 9. PHP中的後臺進程
- 10. 後臺進程終止後的通知
- 11. 如何停止黑莓後臺線程
- 12. 如何殺死/停止後臺線程?
- 13. 停止後臺線程的iOS
- 14. 停止後臺線程的CFRunLoop
- 15. 當後臺應用程序停止BackgroundService
- 16. 在後臺停止java程序
- 17. iPhone:停止在後臺運行程序
- 18. 停止例程服務開始將現有後臺進程帶到前臺
- 19. 如何中斷或停止後臺進程?
- 20. 如何停止android中的所有後臺進程?
- 21. 在後臺啓動進程的停止輸出
- 22. Linux進程在後臺 - 「停止」在作業中?
- 23. 如果設備啓動,我的應用後臺進程停止
- 24. GPS在應用程序進入後臺狀態時不停止
- 25. 主腳本停止後臺進程無效的參數錯誤
- 26. 如何立即停止後臺運行進程?
- 27. java進程停止整個進程樹
- 28. 後臺進程在其父進程終止時被終止?
- 29. 一臺客戶機停止後,Unix ipc服務器停止
- 30. 停止後臺服務當應用程序轉到後臺
'websockets'可以做到這一點 – Baba