没有来自循环的输出

时间:2015-01-31 12:37:23

标签: php performance garbage-collection

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

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

...如果循环在测试期间进行了几百次迭代并且输出processed ...,它就可以工作,但是在脚本运行期间prod环境中什么也没有,它只在完成之后回复所有内容。我只想避免任何超时(通常确实如此)。

2 个答案:

答案 0 :(得分:1)

PHP输出被缓冲;见here。如果你冲洗缓冲区(或关闭缓冲区),你会发现它是实时发生的。

作为&#34;腰带和大括号&#34;,如果你真的关心输出,我会在你进入循环之前回显$ count。

答案 1 :(得分:-1)

此代码块的目的是什么? 好吧,直到$ 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;
    }

}