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

干杯。

最佳答案

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

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

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

至于ob_clean-您确定要删除缓冲区中的输出吗? IMO并没有真正的必要,除非您看到大量的缓慢页面加载。不必担心进行优化(至少现在不这样做)。

关于php - ob_get_level()从级别1开始,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3641598/

10-11 22:44
查看更多