输出缓冲

输出缓冲是在输出被刷新(发送并丢弃)到浏览器(在 Web 上下文中)或 shell(在命令行上)之前对输出进行缓冲(临时存储)。当输出缓冲处于活动状态时,脚本不会发送任何输出,而是将输出存储在内部缓冲区中。

缓冲影响 PHP

PHP 在刷新输出时依赖于底层软件/硬件基础设施。命令行控制台(例如行缓冲)或 Web 服务器和浏览器在 Web 上下文(例如完全缓冲)中实现的缓冲会影响何时将输出显示给最终用户。通过微调服务器设置和/或调整各个层的缓冲区大小,可以消除其中一些影响。

PHP 中的输出缓冲控制

PHP 提供了一个完全缓冲的用户级输出缓冲区,并提供了一些函数来启动、操作和关闭缓冲区(大多数 ob_* 函数),以及两个函数来刷新底层系统缓冲区(flush()ob_implicit_flush())。一些功能也可以使用适当的 php.ini 设置来设置和/或配置。

用例

输出缓冲通常在以下情况下很有用:修改或检查缓冲的输出,或在请求中多次使用它;或者需要控制输出的刷新。具体的用例包括

  • 缓存计算/时间密集脚本的结果,例如通过生成静态 HTML 页面
  • 通过显示生成的输出、将其保存到文件和/或通过电子邮件发送它来重复使用生成的输出
  • 分别刷新 HTML 页面的 head 部分和 body 部分,允许浏览器在脚本执行可能更耗时的过程(例如数据库/文件访问、外部网络连接)时加载外部资源。这只有在 HTTP 状态代码在发送标头后无法更改的情况下才有用
  • 从会产生输出的函数中提取信息(例如 phpinfo()
  • 通过修改/使用部分(例如提取数据、替换单词/短语、添加缺少的 HTML 标记)或在某些条件下完全丢弃它(例如错误)来控制第三方代码的输出
  • 为某些不可用的 Web 服务器功能提供垫片(例如压缩或编码输出)

添加备注

用户贡献的笔记

此页面没有用户贡献的笔记。
To Top