实现实时输出需开启输出缓冲并刷新,配合响应头禁用缓存。使用ob_start()、flush()、ob_flush()及ob_implicit_flush(true),设置Content-Type、X-Accel-Buffering: no和Cache-Control: no-cache,确保内容即时传输。

在PHP中实现实时输出,关键在于控制输出缓冲并设置合适的响应头。默认情况下,PHP脚本会等待执行完毕才将内容发送给客户端,但通过合理配置响应头和输出函数,可以做到边处理边输出,适用于日志展示、进度提示等场景。
启用输出缓冲并刷新内容
要让PHP实时输出内容,需手动开启输出缓冲,并在每次输出后立即刷新缓冲区。以下函数组合是核心:
- ob_start():开启输出缓冲,可配合回调函数处理输出内容
- flush() 和 ob_flush():强制将缓冲区内容发送到客户端
- ob_implicit_flush(true):开启隐式刷新,每次输出自动刷新缓冲
设置自定义响应头
在输出前设置适当的响应头,有助于浏览器正确处理流式内容。常用头信息包括:
- Content-Type:指定输出类型,如 text/html 或 text/plain
- X-Accel-Buffering:Nginx专用头,设为 no 可禁用代理缓冲
- Cache-Control:避免中间缓存,建议设置为 no-cache
示例代码:
立即学习“PHP免费学习笔记(深入)”;
header('Content-Type: text/plain');
header('X-Accel-Buffering: no');
header('Cache-Control: no-cache');
实际应用示例
一个简单的实时输出例子:
这样浏览器会每隔一秒显示一行新内容,而不是等待全部完成后再显示。
基本上就这些,关键是缓冲控制与响应头配合使用。











