我的網頁使用ajax調用來從非常長的php腳本返回數據,所以如果我提前退出頁面並重新加載頁面,該php腳本仍在執行中,這會導致我出現問題。你可以告訴一個PHP服務器中止執行以前運行的腳本嗎?
有沒有辦法告訴服務器放棄執行先前的ajax請求,如果還有一個仍在運行?
感謝
我的網頁使用ajax調用來從非常長的php腳本返回數據,所以如果我提前退出頁面並重新加載頁面,該php腳本仍在執行中,這會導致我出現問題。你可以告訴一個PHP服務器中止執行以前運行的腳本嗎?
有沒有辦法告訴服務器放棄執行先前的ajax請求,如果還有一個仍在運行?
感謝
也許嘗試使用set_time_limit()
功能此腳本。
或者創建一些php腳本併爲其隨機生成一個url。
您是否嘗試在頁面重新加載時將XMLHttpRequest對象設置爲null?
不直接。您需要設置一個方案,將工作轉移到外部(到Web服務器)進程,並且該進程與Web服務器建立了通信通道,使其能夠檢查每個工作是否應該放棄它所做的工作(例如,一個簡單但不理想的方案將檢查「鎖定文件」的最後修改時間;如果它過去超過X秒,則放棄該任務)。
然後,您的網頁會調用腳本,然後適當地「保持」後臺任務(例如通過觸摸前面示例的鎖定文件)。
這樣,當通過AJAX請求啓動任務時,客戶端開始向服務器發出「保持活動」請求,服務器將「保持活動」消息轉發給外部進程。如果用戶重新加載頁面,則「保持活動」請求停止,並且當保持活動閾值消逝時,工作進程將中止。如果一切順利並且工作完成,您的服務器將通過它與工作進程之間的通信通道檢測到這一情況,並在下一次保持活動狀態「ping」時將其報告給客戶端。