理解PHP中的flush,Ob_flush和buffer_output


understanding flush,Ob_flush and buffer_output in PHP

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

的效果
<?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();
?>

这个脚本工作得很好,并显示输出,但是当我删除str_pad或将长度从4096减少到40时,flush不工作。

有谁能告诉我到底是什么原因造成的吗?

我终于找到了原因。

根据PHP.net浏览器需要一定的字节来开始显示页面。比如某些版本的ie需要200字节。而像Firefox或Chrome这样的现代浏览器需要更多字节来启动浏览器显示。

在上述情况下,如果您在Internet Explorer中检查它,它将不需要字符串填充,但在Firefox或Chrome中,您需要在输入中添加空格以显示刷新输出。

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