Php 循环没有输出

Php 循环没有输出,php,performance,garbage-collection,Php,Performance,Garbage Collection,我在一个巨大的数组上进行迭代,它涉及到查询多个API,因此为了避免数据丢失和超时,我这样做: for ($i = 0; $i < $count; $i++) { if ($i % 100 == 0) { echo 'processed: '.$i."\n"; // save to file } } ($i=0;$i100){ ini_集('max_execution_time',0);//没有时间限制 //$count至少包含$i乘以100 对于($i=1;$iP

我在一个巨大的数组上进行迭代,它涉及到查询多个API,因此为了避免数据丢失和超时,我这样做:

for ($i = 0; $i < $count; $i++) {
  if ($i % 100 == 0) {
    echo 'processed: '.$i."\n";
    // save to file
  }
}
($i=0;$i<$count;$i++)的
{
如果($i%100==0){
回显“已处理:”.$i.“\n”;
//保存到文件
}
}

。。。如果循环在测试期间进行了几百次迭代,并输出了
已处理…
,那么它就可以工作,但在脚本运行期间,prod环境中根本没有任何内容,它只会在完成后回显所有内容。我只是想避免任何超时,以防超时时间过长。

此代码块的目的是什么? 嗯,在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;
    }

}
if($count>100){
ini_集('max_execution_time',0);//没有时间限制
//$count至少包含$i乘以100

对于($i=1;$iPHP输出是缓冲的;请参阅。如果刷新缓冲区(或关闭缓冲),您将看到它实时发生


作为“皮带和支架”,如果您真的关心输出,我会在您进入循环之前回显$count。

回显$count,您在产品中实际获得了100秒吗?生产环境与您的测试环境有何不同?大约需要多长时间?是否有任何服务器限制?检查您的最大执行时间是的,但是只有在脚本处理完所有内容之后。它不会一次输出每个
100
。您的答案将无法正确处理循环。模块的目的是每100次迭代进行一次响应。我认为,我在这里假设实际处理已从代码段中编辑。@Jeff Watkins目的是什么循环?我的逻辑有什么问题?伪程序员..啊,我明白了,为这些类型的脚本刷新缓冲区是一种好的做法吗?刷新缓冲区显然占用了一点资源,但如果您希望看到“实时”(即接近实时)的话输出时,您需要刷新或关闭缓冲。PHP可能正在做的只是保存输出,直到达到一定数量的内容,然后自动刷新(或在HTTP请求处理结束时)。换句话说,不要试图用刷新来执行一千万次回音,而希望您的脚本能够像缓冲解决方案一样执行。