我正在迭代一个庞大的数组,它涉及查询多个API,以避免数据丢失和超时,我这样做:
for ($i = 0; $i < $count; $i++) {
if ($i % 100 == 0) {
echo 'processed: '.$i."\n";
// save to file
}
}
...如果循环在测试期间进行了几百次迭代并且输出processed ...
,它就可以工作,但是在脚本运行期间prod环境中什么也没有,它只在完成之后回复所有内容。我只想避免任何超时(通常确实如此)。
答案 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;
}
}