【问题标题】:outputing current progress in a php script (buffers)?在 php 脚本(缓冲区)中输出当前进度?
【发布时间】:2012-02-25 03:59:04
【问题描述】:

我正在尝试向脚本用户更新它的进度,而不是等待它完全执行。

例如,我正在调用不同的 Web 链接来获取特定的消息(REST Web 服务) .

我可能需要调用 10-20 个 URL,因此,我想在获取每个 URL 后更新用户的状态,而不是等待整个 10-20 个完成。

尝试了以下方法:

ob_start();

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

没有达到预期的效果...... 有什么线索吗?

【问题讨论】:

  • 为什么使用“endwhile”而不是括号?

标签: php buffer output-buffering


【解决方案1】:

当您运行该循环时,打印到浏览器不是异步的。它只能在循环完成后打印。

我建议您使用 Ajax Queue 并一一触发这些调用。 Ajax 是异步的,只有这样您才能更新用户。

或者您可以在每次循环迭代后将一些好的元数据写入文件,您可以将这些元数据提供给 Observer,这又是 Ajax 调用来读取该文件并向用户显示进度

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多