PHP中的输出缓冲是否需要更多资源?

Jas*_*vis 8 php output-buffering

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

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

Nee*_*eel 5

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

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

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

我认为你应该一直戴着它,并在特殊情况下将其取下。


小智 3

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

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