新浪博客

【PHP】实现立即输出缓冲区内容

2023-07-11 16:27阅读:
今天有朋友问到,调chat接口,想把返回结果逐字输出到页面上。然后就调试了一下相关代码,搜索到这篇文章:
https://www.jianshu.com/p/06a55bc97e5c
for ($i = 0; $i < 10; $i++) {
echo $i . '';
ob_flush();
flush();
sleep(1);
}
按代码理解似乎应该是每过1秒钟就会输出一次数据,但在Nginx服务器会待代码执行完一并输出。
nginx 里面 flush 默认是无效的,这个函数默认是作用在php作为 apache模块时才有效,如果需要 nginx 里面支持,需要加上一行 :
header('X-Accel-Buffering: no');
X-Accel-Buffering 相关入口
完整代码如下:
header(
'Cache-Control: no-cache') ;
// 禁用浏览器缓存
header('X-Accel-Buffering: no');
// 适用于Nginx服务器环境
for ($i = 0; $i <<span >10; $i++) {
echo $i . '';
ob_flush();
flush();
sleep(1);
}

我的更多文章

下载客户端阅读体验更佳

APP专享