2012-02-25 60 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调用读取该文件,并显示进度给用户