而不是寫入到您使用AJAX或額外的數據庫字段獲取的靜態文件,爲什麼沒有另一個PHP腳本只是返回指定任務的完成百分比。然後,您的頁面可以通過對所述PHP腳本的輕量級AJAX請求更新進度。
對於實施這個「進度」腳本,如果我對「處理大量數據」的含義有更多的瞭解,我可以提供更多的建議。如果您正在寫入文件,您的「進度」腳本可以簡單地檢查文件大小並返回完成的百分比。對於更復雜的任務,您可以爲特定流程分配基準,並基於最後完成或當前正在運行的流程返回估計完成百分比。
UPDATE
這是「檢查進展」,它被簡單地等待來自請求的響應的有源腳本的一個建議的方法。我有一個數據挖掘應用程序,我使用了類似的方法。
在您的腳本中,您正在等待的腳本(您要檢查腳本的進度),您可以存儲(在文件或數據庫中,我使用數據庫,因爲我有數百個進程任何時候都需要跟蹤他們的進度,而且我有另一個腳本,可以監視這些進程的進度)進程變量。當過程開始時,將其設置爲1.您可以輕鬆選擇腳本將傳遞的任意數量的「檢查點」,並計算給定當前檢查點的百分比。然而,對於一個大的請求,你可能更感興趣的是知道請求完成的大概百分比。一種可能的解決方案是知道返回內容的大小,並根據任何時候收到的百分比設置您的狀態變量。即如果您在循環中接收到請求數據,則每次迭代都可以更新狀態。或者,如果您正在下載到平面文件,則可以輪詢文件的大小。如果知道完成請求所需的大概時間,並簡單地與腳本的當前執行時間進行比較,那麼隨着時間的推移(而不是文件大小),這可能會不準確。顯然,這些都不是完美的解決方案,但我希望他們能給你一些洞察你的選擇。
嗨達斯汀,這個工具是一個提要爬蟲,所以大部分的過程只是在等待響應。你如何讓另一個PHP腳本「調用」一個活動腳本來獲取百分比?謝謝! – 2010-06-09 21:18:50
我已經更新了關於如何去做的簡短討論:) – defines 2010-06-10 13:48:26
感謝Dustin的詳細解釋! – 2010-06-11 09:25:25