2012-05-30 247 views
2

我不是http請求方面的專家,所以這個問題對於一些人來說可能是微不足道的。我向php腳本發送了一個請求,這需要花費很多時間來處理文件並返回響應。在腳本完成其任務以讓用戶瞭解進程狀態之前,有沒有辦法發送響應?由於此任務可能需要幾分鐘時間,所以我想在流程的關鍵部分完成時通知用戶。http請求部分響應

注:我不能打破這一請求轉換成其他幾個人

我可能沒有正確的做法在這裏,如果這樣做,你有其他的想法如何可以這樣處理?

回答

1

從技術上說是的,但它需要你對http-stack進行細粒度的控制,在典型的php設置中你可能沒有。我建議你考慮其他解決方案(如製作請求啓動任務 - 然後輪詢以獲取有關的最新進展)

0

http://www.redips.net/javascript/ajax-progress-bar/

這裏是一個偉大的一篇文章,越過創建AJAX進度條使用與PHP。

讓我知道它是否沒有意義!

+0

我不是在尋找進度條。 – slash197

+0

我唯一能想到的就是讓php腳本存儲會話ID和進度值(但是你想計算它)在一個用異步方式檢查ajax的數據庫中。 這些可能是關聯狀態而不是數字。例如,status ='正在執行第一個任務'... status ='第一個任務完成,開始第二個任務'...等 但這個想法仍然有第二個Ajax調用來檢查腳本正在更新的內容其過程 –

0

我認爲長時間處理請求的最佳方式是cron作業。你可以發送請求來創建'任務'並通過cron作業來捕獲任務。 Cron作業可以在工作時更改任務狀態,並且可以通過間隔請求檢查任務狀態。我無法想象以另一種方式告知用戶有關請求處理的方式。只要你的迴應你的頭被髮送和PHP停止。

編輯:應該指出的是,Cron作業只在Linux服務器上可用。 Windows服務器需要訪問大多數Web主機不允許的任務調度程序。