如何在生成时回显输出

时间:2013-06-25 15:17:31

标签: php

如何为以下循环的每次迭代回显一些内容:

<?
    for($i=0;$i<5;$i++) {
          // some (slow) logic
          echo $i;
    } 
?>

我希望在运行时看到$i输出的值,但是在脚本执行后,它不会输出任何内容,然后0 1 2 3 4

2 个答案:

答案 0 :(得分:1)

试试这个。这里的关键是知道为您的服务器设置了什么output_buffering值(默认值= 4096)。

ob_start();
$buffer = str_repeat(" ", 4096)."\r\n<span></span>\r\n";

for ($i=0; $i<25; $i++) {
      echo $buffer.$i;
        ob_flush();
        flush();
          sleep(1);
}       

ob_end_flush();

http://php.net/manual/en/outcontrol.configuration.php

答案 1 :(得分:-2)

所以构建一个字符串,然后回显字符串:

$str = '';
for($i = 0; $i < 5; $i++) {
   $str .= $i;
}
echo $str;

请注意,实际上,这不会改变任何内容。这样一个微小的循环几乎可以立即执行并几乎立即显示。如果您在浏览器上下文中执行此操作,您可能会在一个网络数据包中获得所有数字,并且浏览器也会立即呈现/显示它们。