理解PHP中的flush,Ob_flush和buffer_output

时间:2011-10-25 08:14:32

标签: php apache2 output-buffering

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

的效果
<?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时,刷新不起作用。

任何人都可以帮助我解决究竟是什么原因造成的......

2 个答案:

答案 0 :(得分:1)

Atlast我找到了原因。

根据PHP.net Broswers需要某些字节才能开始显示页面。像某些版本的Internet Explorer需要200个字节。像Firefox或Chrome这样的现代浏览器需要更多字节来启动浏览器显示。

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

答案 1 :(得分:0)

我认识到这个问题,自己做过一次..你有激活输出压缩吗?