我正在阅读关于内容缓冲的内容,我发现了一个简单的脚本来显示刷新
的效果<?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中,您需要在输入中添加空格以显示刷新输出。
我认识到这个问题,我自己也遇到过。您是否激活了输出压缩?