ob_get_level()从1级开始

时间:2010-09-04 09:13:40

标签: php buffer output-buffering

输出缓冲有一些问题。主要是,我正在尝试使用ob_gzhandler回调运行输出缓冲,但它一直告诉我它使用不受支持的压缩类型。一切都启用了,我相信问题是在我的脚本开头运行ob_get_level()会产生一个级别1. php.ini将我的output_buffering设置为4096.

如果我运行的话:

while(ob_get_level() > 0){
   ob_end_clean();
}

然后我可以使用ob_gzhandler回调成功运行ob_start()。但我想知道它是否应该是一个问题。在我的脚本中,我在各个点调用ob_clean(),因为我避免堆叠太多缓冲区,因为我已经读过这可以提高性能。我只是不确定我应该在这里做什么。

干杯。

1 个答案:

答案 0 :(得分:8)

默认情况下启用了输出缓冲(请参阅the docs) - 这基本上意味着每个PHP脚本都以ob_start()开头。

如果要为所有PHP脚本禁用默认OB,请在php.ini中设置output_buffering = Off

如果您只想禁用此特定脚本的默认OB,请使用while循环 - 这是完全正确的。

至于ob_clean - 你确定要删除缓冲区中的输出吗?除非你看到很慢的页面加载,否则IMO并不是必需的。不要担心优化(至少现在不是)。