PHP输出缓冲 - 听起来像个坏主意,是吗?

时间:2009-10-12 20:14:05

标签: php performance output-buffering

只想在php输出缓冲上挑选专家的大脑。有些时候我出于某种原因想要实现它,但总是设法重新安排我的代码以解决它。

我避免使用它,因为它听起来会花费资源。我的意思是,如果他们能为编码器提供如此出色的灵活性,为什么他们不总是缓冲输出?我能想到的唯一答案是:因为不缓冲它可以节省大量资源,并且通过良好的编码实践你不应该需要它。

我离开这里了吗?

4 个答案:

答案 0 :(得分:20)

根据我的经验,对性能没有显着影响。我也找不到关于这个主题的一致答案 - 有些人声称几乎没有任何打击性能,而有些人说有一个轻微但重要的影响。甚至还有一个关于php.net的评论,建议缓冲增加性能与多个输出函数相比,而不是我已经验证过这个或任何东西。

我认为是否缓冲的问题更多地与应用程序的预期用途有关。如果要在发送输出之前压缩输出,或者如果要在代码中确切地控制输出的时间和位置,则缓冲很有意义。由于添加缓冲不需要花费太多精力,所以你可以尝试一下 - 如果需要的话,删除它应该相对容易。

答案 1 :(得分:8)

我认为恰恰相反。除非遇到真正需要它的情况,否则不缓冲输出是一个坏主意。例如,一个会产生大量输出的脚本。

在大多数情况下,烧掉一堆程序员的时间来保存一些未知数量的(廉价)内存听起来像是浪费资源。

答案 2 :(得分:5)

如果您处于在标题之前输出内容的情况,则需要将其填充到缓冲区中,否则页面将错误输出内容在标题之前输出。这种情况发生在我的共享库中,没有足够的时间进入并进行适当的修复以启动。这是其中一个标记为// TODO / FIXME然后返回并在以后使其正常。

答案 3 :(得分:4)

使用输出缓冲我能够为我上一个PHP项目的家庭酿造的MVC后端快速制作一个轻量级的模板系统。我喜欢它并发现它非常有用。

关于资源:这不是资源密集型的。如果你担心它使用的很少,PHP就不适合这项工作。我喜欢PHP,但它不是最轻的选择。但是,在任何合理的现代服务器上,这都无关紧要。