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

for ($i = 0; $i < 10; $i++) {
    echo $i . '<br>';
    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 < 10; $i++) {
    echo $i . '<br>';
    ob_flush();
    flush();
    sleep(1);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • PHP的输出缓冲区 什么是缓冲区?简单而言,缓冲区的作用就是,把输入或者输出的内容先放进内存,而不显示或者读取.至...
    桖辶殇阅读 6,065评论 3 12
  • php.ini设置,上传大文件: post_max_size = 128Mupload_max_filesize ...
    bycall阅读 11,777评论 3 64
  • Nginx 的配置文件使用的就是一门微型的编程语言,许多真实世界里的 Nginx 配置文件其实就是一个一个的小程序...
    SkTj阅读 9,695评论 0 7
  • 上一篇《WEB请求处理一:浏览器请求发起处理》,我们讲述了浏览器端请求发起过程,通过DNS域名解析服务器IP,并建...
    七寸知架构阅读 81,423评论 21 356
  • 在周胖的四年大学生涯里,不可忽视的是她有一个响当当的外号:波霸。我跟周胖刚好相反,我在大学期间身材还算不错,工作之...
    唐齐斋阅读 2,299评论 0 0