2012-02-25 61 views
1

我試圖更新腳本用戶的進度,而不是等待它完全執行。

例如,我調用不同的Web鏈接來獲取特定的消息(REST Web服務)。

我可能需要調用10-20個URL,因此,我想在每次訪問URL時更新每個URL狀態的用戶,而不是等待整個10-20的完成。在php腳本(緩衝區)中輸出當前進度?

嘗試了以下內容:

ob_start(); 

while(xxx): 
    $result = call_url($url); // my custom function of performing web service call 
    echo $result; 
    ob_flush(); 
endwhile; 

不做預期.... 任何線索?

+0

爲什麼要用「ENDWHILE」和不是括號? – 2012-02-25 04:37:04

+0

只有首選事項。 – 2012-02-25 09:19:38

回答

2

當您運行該循環時,瀏覽器的打印不是異步的。它只能在循環完成後打印。

我建議你使用Ajax Queue並逐個觸發這些調用。只有您可以更新用戶的方式,Ajax纔是異步的。

或者你可以寫一些好的元數據每次循環後的文件可以喂到一個觀察這又是Ajax調用讀取該文件,並顯示進度給用戶