PHP流式输出,在Nginx下可以正常刷新缓存区 , 但是在Apache下会等待循环全部执行完,才会刷新!有怎么解决?
header('X-Accel-Buffering: no'); // Nginx情况下必须加这一行
header('Content-type: text/event-stream');
header('Cache-Control: no-cache');
// 输出数据
for($i = 0; $i < 10; $i++){
echo "data:".$i . "n";
ob_flush();
flush();
sleep(1); // 模拟耗时操作
}
在Apache下,PHP默认会将输出缓冲区的内容一次性发送给客户端,导致无法实时刷新。为了解决这个问题,可以使用以下两种方法之一:
SetEnv no-gzip 1
SetEnv proxy-nokeepalive 1
这些设置将禁用gzip压缩和持久连接,从而使Apache立即将缓冲区的内容发送给客户端。
请注意,这些解决方法可能需要对服务器进行配置更改,因此请确保你有足够的权限来进行修改。另外,使用流式输出时要注意潜在的性能问题,因为它会占用服务器资源并增加网络流量。
原文地址:https://blog.csdn.net/airen3339/article/details/134712126
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_18431.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!