了解PHP中的flush、Ob_flush和buffer_输出

了解PHP中的flush、Ob_flush和buffer_输出,php,apache2,output-buffering,Php,Apache2,Output Buffering,我正在阅读有关内容缓冲的内容,我发现了一个简单的脚本来显示刷新的效果 <?php if (ob_get_level() == 0) ob_start(); for ($i = 0; $i < 10; $i++) { echo "<br> Line to show."; echo str_pad('', 4096) . "\n"; ob_flush(); flush(); sleep(2); } echo "Done.";

我正在阅读有关内容缓冲的内容,我发现了一个简单的脚本来显示刷新的效果

<?php

if (ob_get_level() == 0) ob_start();

for ($i = 0; $i < 10; $i++) {

    echo "<br> Line to show.";
    echo str_pad('', 4096) . "\n";

    ob_flush();
    flush();
    sleep(2);
}

echo "Done.";

ob_end_flush();

?>

这个脚本可以很好地工作并显示输出,但是当我移除stru焊盘或将长度从4096减少到40时,flush不起作用


有人能帮我找出到底是什么原因造成的吗

我认识到这个问题,我自己也有过一次。。您是否激活了输出压缩功能?

我认识到这个问题,我自己也遇到过。。您是否激活了输出压缩功能?

至少我找到了原因

根据Broswers的说法,开始显示页面需要特定字节。像某些版本的Internet Explorer一样,需要200字节。而像Firefox或Chrome这样的现代浏览器需要更多的字节来启动浏览器显示


在上述情况下,如果您在Internet Explorer中选中它,则不需要填充字符串,但在Firefox或Chrome中,您需要使用输入填充空格以显示刷新的输出

我终于找到了原因

根据Broswers的说法,开始显示页面需要特定字节。像某些版本的Internet Explorer一样,需要200字节。而像Firefox或Chrome这样的现代浏览器需要更多的字节来启动浏览器显示


在上述情况下,如果您在Internet Explorer中选中它,则不需要填充字符串,但在Firefox或Chrome中,您需要使用输入填充空格以显示刷新的输出

谢谢有人已经在我跳水的地方游泳了。不,它在php.iniThanks中设置为off。有人已经在我跳水的地方游泳了。不,它在php.ini中设置为off