PHP输出缓冲抛出警告

PHP输出缓冲抛出警告,php,output-buffering,Php,Output Buffering,我必须在PHP脚本运行时输出结果: ob_implicit_flush(true); ob_start(); for ($i=0; $i<5; $i++) { echo $i . ' - '; ob_end_flush(); flush(); sleep(1); } ob\u隐式\u刷新(true); ob_start(); 对于第一个循环中的($i=0;$i),您将结束缓冲区。如果您想这样做,您应该在每个循环中启动一个新的缓冲区 ob_implicit_

我必须在PHP脚本运行时输出结果:

ob_implicit_flush(true);
ob_start();
for ($i=0; $i<5; $i++) {
    echo $i . ' - ';
    ob_end_flush();
    flush();
    sleep(1);
}
ob\u隐式\u刷新(true);
ob_start();

对于第一个循环中的($i=0;$i),您将结束缓冲区。如果您想这样做,您应该在每个循环中启动一个新的缓冲区

ob_implicit_flush(true);
for ($i=0; $i<5; $i++) {
    ob_start();
    echo $i . ' - ';
    ob_end_flush();
    flush();
    sleep(1);
}

在第一个循环中,您将结束缓冲区。如果您想这样做,您应该在每个循环中启动一个新的缓冲区

ob_implicit_flush(true);
for ($i=0; $i<5; $i++) {
    ob_start();
    echo $i . ' - ';
    ob_end_flush();
    flush();
    sleep(1);
}
ob\u end\u flush()
将禁用缓冲,因此以后在循环中对此的调用将失败。只需使用
ob\u flush()
,即可清除缓冲区,但保持输出缓冲:

ob_implicit_flush(true);
ob_start();
for ($i=0; $i<5; $i++) {
    echo $i . ' - ';
    ob_flush();
    sleep(1);
}
ob_end_flush();
ob\u隐式\u刷新(true);
ob_start();
对于($i=0;$i
ob\u end\u flush()
将禁用缓冲,因此以后在循环中对此的调用将失败。只需使用
ob\u flush()
,它将清除缓冲区,但保持输出缓冲:

ob_implicit_flush(true);
ob_start();
for ($i=0; $i<5; $i++) {
    echo $i . ' - ';
    ob_flush();
    sleep(1);
}
ob_end_flush();
ob\u隐式\u刷新(true);
ob_start();

对于($i=0;$i好的,我这样修复它:

ob_implicit_flush(true);
ob_start();
for ($i=0; $i<5; $i++) {
    echo $i . ' - ';
    flush();
    @ob_flush();
    @ob_end_clean();
    sleep(1);
}
ob\u隐式\u刷新(true);
ob_start();

对于($i=0;$i好的,我这样修复它:

ob_implicit_flush(true);
ob_start();
for ($i=0; $i<5; $i++) {
    echo $i . ' - ';
    flush();
    @ob_flush();
    @ob_end_clean();
    sleep(1);
}
ob\u隐式\u刷新(true);
ob_start();

对于($i=0;$i,我再次思考并选择另一种方式。您应该在结束时只调用一次
ob\u end\u flush()
。再次思考并选择另一种方式。您应该只调用
ob\u end\u flush()
最后一次。谢谢!但是如果在每个循环中启动一个新的缓冲区会对性能产生影响,那么只清理第一个缓冲区并重新使用是否更好?以及如何执行?为什么要多次启动缓冲区?他只需要
ob_flush()
@FrankerZ你写评论时,我正在编辑答案:P@JimWright此方法不起作用,因为它一次响应所有内容,而不是在每次之后loop@medk看一看。在浏览器中,输出缓冲可能有点挑剔。谢谢!但是如果在每个循环中启动一个新的缓冲区会对性能产生影响,那么清理一下会更好吗第一次启动并重新使用它?如何执行?为什么要多次启动缓冲区?他只需要
ob_flush()
@FrankerZ你写评论时,我正在编辑答案:P@JimWright此方法不起作用,因为它一次响应所有内容,而不是在每次之后loop@medk看一看。在浏览器中,输出缓冲可能有点挑剔。你不需要在循环后刷新。如果他之后有额外的代码,或者其他任何东西,他会回显(例如final end语句。)包含很重要。循环后不需要刷新。如果他之后有额外的代码,或者他要回显的任何其他内容(例如final end语句)。包含很重要。