输出缓冲ob_get_clean无效

时间:2017-11-16 12:08:03

标签: php

我有下面的代码代码,可以正常工作。它不会在浏览器上发送任何我想要的输出。

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 个答案:

答案 0 :(得分:4)

可缓冲的数量有一个限制,默认情况下是4KB,因此您可以使用脚本达到最大值。如果你想将它用于更大的缓冲区,你必须编辑你的php.ini设置以反映这一点。引用PHP文档

  

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

PHP文档在这个主题上非常技术性,所以我发现这篇博文解释了输出缓冲的要点和技巧:

Streaming and Output Buffering