PHP延时后输出缓冲失效咋整_PHP刷新缓冲配合sleep操作【解答】-php教程

PHP sleep()期间输出不显示是因输出缓冲未刷新,需关闭output_buffering、调用ob_flush()和flush()、禁用Nginx缓冲并凑够1KB响应体。

PHP sleep() 期间输出缓冲没反应?先关掉 output_buffering

默认开启的 PHP 输出缓冲会把 echo、print 的内容先存起来,等脚本结束或缓冲满才发给浏览器——所以加了 sleep() 后你啥都看不到,不是代码错,是缓冲在“憋着”。解决办法很直接:关掉它。

操作方式有三种,按优先级推荐:

  • 在脚本开头加 ob_end_flush() + ini_set('output_buffering', 'Off')(注意:后者在某些 SAPI 如 CLI 下无效)
  • 改 php.ini:把 output_buffering = 4096 改成 output_buffering = Off,然后重启 Web 服务
  • 用 apache2ctl graceful 或 nginx -s reload 刷新配置后,再确认 phpinfo() 里 output_buffering 确实是 Off

flush() 和 ob_flush() 到底谁先调?顺序不能反

即使关了全局缓冲,Web 服务器(如 Nginx、Apache)和浏览器自己也有缓存层。想让 sleep() 中间输出的内容实时可见,必须手动触发刷新链:

  • 先调 ob_flush():清空 PHP 用户层输出缓冲(如果还开着的话)
  • 再调 flush():把 PHP 底层的写入操作推给 Web 服务器
  • 两者缺一不可,顺序颠倒或只调一个,大概率还是卡住

典型写法:

立即学习“PHP免费学习笔记(深入)”;

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » PHP延时后输出缓冲失效咋整_PHP刷新缓冲配合sleep操作【解答】-php教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3998019+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3998019+
  • 本周更新: 0+
  • 最后更新: 2026-03-16