输出缓冲是在输出被刷新(发送并丢弃)到浏览器(在 Web 上下文中)或 shell(在命令行上)之前对输出进行缓冲(临时存储)。当输出缓冲处于活动状态时,脚本不会发送任何输出,而是将输出存储在内部缓冲区中。
PHP 在刷新输出时依赖于底层软件/硬件基础设施。命令行控制台(例如行缓冲)或 Web 服务器和浏览器在 Web 上下文(例如完全缓冲)中实现的缓冲会影响何时将输出显示给最终用户。通过微调服务器设置和/或调整各个层的缓冲区大小,可以消除其中一些影响。
PHP 提供了一个完全缓冲的用户级输出缓冲区,并提供了一些函数来启动、操作和关闭缓冲区(大多数 ob_* 函数),以及两个函数来刷新底层系统缓冲区(flush() 和 ob_implicit_flush())。一些功能也可以使用适当的 php.ini 设置来设置和/或配置。
输出缓冲通常在以下情况下很有用:修改或检查缓冲的输出,或在请求中多次使用它;或者需要控制输出的刷新。具体的用例包括
HTML
页面
HTML
页面的 head
部分和 body
部分,允许浏览器在脚本执行可能更耗时的过程(例如数据库/文件访问、外部网络连接)时加载外部资源。这只有在 HTTP
状态代码在发送标头后无法更改的情况下才有用
HTML
标记)或在某些条件下完全丢弃它(例如错误)来控制第三方代码的输出