当前位置:首页 > PHP > 正文内容

php event-stream flush nginx不生效的解决方式

高老师2年前 (2024-05-17)PHP370

一般情况网上的代码在apache上面是正常执行,nginx是不会生效的,原因:

(1)、nginx默认的缓冲区配置很大,你输出的内容不能填充满缓冲区,所以不能触发发送给客户端,配置如下:

fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;

可以调整配置更小一点,或者使用php先输出一堆空填充信息,让缓冲区溢满。

(2)、nginx默认开启gzip压缩,压缩的本质是内容越长压缩效率越好,因此gzip需要获取完整的内容压缩后发送给客户端,可以关闭此配置

当然也可以直接不修改nginx配置,使用php解决,浪费我2天下班时间,特此记录。

header('Content-Type: text/event-stream'); // 以事件流的形式告知浏览器进行显示
header('Cache-Control: no-cache');         // 告知浏览器不进行缓存
header('X-Accel-Buffering: no');           // 关闭加速缓冲

echo '输出信息';

ob_flush(); 
flush();


扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/763.html

分享给朋友:

“php event-stream flush nginx不生效的解决方式” 的相关文章

 php调用.net的dll文件,php调用.net dll

php调用.net的dll文件,php调用.net dll

本篇文章不是讲解如何用.net开发自己的dll然后PHP通过com调用。主要记录PHP官方支持的DOTNET 基本语法如下:$obj = new DOTNET("assembly", "classname")a...

编写php com组件,php调用.net dll,php源码保护

编写php com组件,php调用.net dll,php源码保护

开发com组件可以用c++,vc++,net,我比较熟悉net,演示用dnet(1).创建项目:启动vs2017,新建项目,选择Visual C# ->Windows桌面->类库通用windows(2). 修改Com项目:点击 项目->项目属性,再点击应用程序->程序集信息,...

PHP yield  PHP协程,PHP协程用法学习

PHP yield PHP协程,PHP协程用法学习

【一】.迭代器迭代是指反复执行一个过程,每执行一次叫做一次迭代。比如下面的代码就叫做迭代:1.  <?php   2.  $data = ['1', '2', &...

php代理下载,php代下载文件,php下载远程文件,php远程文件下载

php代理下载,php代下载文件,php下载远程文件,php远程文件下载

经常我们下载国外资源容易被墙,可以通过php脚本获取远程文件流然后输出给我们的浏览器来下载。<?php //设置下载文件的url $url = 'https://mirrors.huaweicloud.com/ubuntukylin/ubuntukylin-19....

php redis队列实现秒杀 , php用redis 实现秒杀功能

php redis队列实现秒杀 , php用redis 实现秒杀功能

为什么使用队列?因为pop取队列具有原子性。假如我们需要秒杀一个商品id,我们先将商品的库存保存到一个队列。例如:<?php $redis = new Redis(); $redis->connect('127.0.0.1', 6...

php迭代器返回值,php yield getReturn

php迭代器返回值,php yield getReturn

php生成器的方法getReturn获取生成器迭代完成后的返回值,当生成器迭代完成会将生成器的返回值返回,因此如果迭代器未进行迭代是获取不到值的,如果你没有return值则返回null,参考代码:<?php function G1() {    &nbs...