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

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

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

一般情况网上的代码在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中Session文件过多的解决方法

PHP中Session文件过多的解决方法

PHP的session文件夹默认保存在同一个文件,随着访客的增多,访问的速度会非常慢,例如部分管理系统后台每天登陆1000次,1个月就创建了30000个session文件,一年后是多少?假设这个系统的用户是上万人呢?方法1:每个网站使用自己的session文件夹,代码如下:<?php $pat...

php 开启错误提示,php 关闭错误提示

php 开启错误提示,php 关闭错误提示

开启错误提示代码:ini_set("display_errors", "On"); error_reporting(E_ALL | E_STRICT);关闭错误提示代码:error_reporting(E_ALL ^&n...

redis订阅和发布,redis消息订阅与发布, phpredis订阅和发布

redis订阅和发布,redis消息订阅与发布, phpredis订阅和发布

Redis提供了发布订阅功能,可以用于消息的传输,Redis的发布订阅机制包括三个部分,发布者(publisher),订阅者(subscriber)和频道(channel)。 发布者和订阅者都是Redis客户端,Channel则为Redis服务器端,发布者将消息发送到某个的频道,订阅了这个...

php new class

php new class

<?php $member = new class {     public function getInfo()     {    ...

php异步信号处理

php异步信号处理

php7.1引入了PHP异步信号处理函数pcntl_async_signals() 来处理阻塞问题。在php7之前信号处理方式有2种,第一种是基于ticks来每执行一行代码来触发执行信号监听,第二种是直接while(true){  //监听信号 }第一种方式如果某行的代码阻塞时间较长会影响...

PHP最快方式模拟curl,PHP最快爬虫模拟方法

PHP最快方式模拟curl,PHP最快爬虫模拟方法

有时候我们需要爬一个接口,但是这个接口需要很多参数,包括header和cookie要去编写,使用php curl模拟实在太慢。我们可以通过浏览器的network来复制请求为curl命令。例如我需要模拟请求接口地址:https://www.xkmz.cc/Ajax/Debug/delly,我们只需要在...