输出缓冲ob_get_clean无法工作

4
我有以下代码,它能够按照我的要求正常工作。它不会在浏览器上输出任何内容,这正是我想要的。
ob_start();
echo "test";
echo "test";
$output = ob_get_clean( );

但是问题出在我的以下代码中。即使我最后有$output = ob_get_clean( );,以下代码仍会将输出发送到浏览器。

ob_start();
for($i=0;$i<=10000000;$i++){
    echo $i."<br/>";
}
$output = ob_get_clean( );

我不理解输出缓冲的概念。大家都说你可以控制输出并在想要的时候发送输出,但是我的上面的脚本开始将输出发送到浏览器。

1个回答

4

默认情况下,缓冲区的容量有限制,最大值为4KB,因此您的脚本已达到最大值。如果您想要用于更大的缓冲区,您需要编辑php.ini设置以反映这一点。引用PHP文档的话说:

您可以通过将此指令设置为“On”来为所有文件启用输出缓冲。如果您希望将缓冲区的大小限制为某个特定大小-您可以使用字节数的最大值作为此指令的值(例如,output_buffering = 4096)。从PHP 4.3.5开始,在PHP-CLI中始终关闭此指令。source

PHP文档在这个主题上非常技术化,因此我找到了这篇博客文章,它解释了输出缓冲的各个方面和技巧:

流式传输和输出缓冲


输出缓冲的最大限制是多少?我已经将其增加到50 KB,但现在我的脚本没有任何反应,它停止了。 - Dhairya Lakhera

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接