7

输出缓冲有一些问题。主要是,我正在尝试使用 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(),因为我避免堆叠太多缓冲区,因为我读过这可以提高性能。我只是不确定我应该在这里做什么。

干杯。

4

1 回答 1

8

您默认启用了输出缓冲(请参阅文档)——这基本上意味着每个 PHP 脚本都以 ob_start() 开头。

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

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

至于ob_clean - 您确定要删除缓冲区中的输出吗?IMO 不是真的有必要,除非您看到页面加载速度很慢。不要担心优化它(至少现在不是)。

于 2010-09-04T09:19:53.813 回答