8

当包括服务器内存在内的性能很重要时,我很好奇是否使用像 ob_start() 这样的输出缓冲;在 PHP 中有任何性能命中而不是使用它吗?它是否使用更多内存或任何东西来使用它?

在我在一个高流量站点的情况下,我需要所有内存用于 memcache 和 APC 以及所有其他服务器活动,我只是好奇是否应该使用它,它对我有用的唯一真正原因是重定向页面,发送标题我应该在发送标题后说,我的网站有标题,正文,页脚文件设置,所以有时我需要根据正文文件中的内容进行重定向,所以如果标题已经显示离子屏幕产生问题,使用输出缓冲是一种解决方案,但还有其他解决方案,所以只是对性能感到好奇

4

2 回答 2

4

输出缓冲有用的原因有两个

  1. 为了提高性能,您不必在每次回显时都等待网络套接字可用。
  2. 避免过早发送标头。一旦你向浏览器发送了一些内容,标题也必须被发送,完成后你不能修改它们,例如如果你想设置一个cookie或改变内容类型。

当然,在请求结束之前将所有内容都存储在内存中是有代价的。通常,与 PHP 进程的整体大小相比,这应该非常小。也就是说,除非您计划通过网络发送大量文件。如果是这种情况,您可以使用 ob_flush() 和 flush() 定期刷新缓冲区(或暂时完全禁用缓冲区)以减少使用的峰值内存。

在我看来,您应该一直使用它,并在特殊情况下将其删除。

于 2009-10-01T11:50:38.050 回答
3

我认为最好将它与高流量站点一起使用,或者至少关闭隐式刷新,以避免通过网络发送部分响应,因为如果接收器也很慢,它会减慢脚本的其余部分。

通过一次性发送整个响应,您可以释放 php 脚本使用的所有资源,因此效率更高。

于 2009-10-01T09:53:17.683 回答