循环没有输出

No output from the loop

我正在迭代一个巨大的数组,它涉及查询多个 API,以避免数据丢失和超时,我正在这样做:

for ($i = 0; $i < $count; $i++) {
  if ($i % 100 == 0) {
    echo 'processed: '.$i."\n";
    // save to file
  }
}

... 如果在测试期间循环是几百次迭代并输出 processed ...,它会起作用,但在脚本期间在生产环境中什么都没有是 运行,它仅在之后回显所有内容完成。我只是想避免任何超时,因为它需要(并且通常)很长时间。

这个代码块的目的是什么? 好吧,在 $i 达到 100 之前,无论如何都是资源浪费.. 你可以试试:

if( $count > 100 ) {

    ini_set('max_execution_time', 0);  // no time limit

    // $count contains at least $i times 100
    for($i = 1; $i <= $count / 100; $i++) {
        echo $i * 100;
    }

}

PHP 输出被缓冲;参见 here。如果您刷新缓冲区(或关闭缓冲),您会看到它实时发生。

作为 "belt and braces",如果你真的关心输出,我会在你进入循环之前回显 $count。