讲师中心 微信公众号

工具推荐

视频效率加速
剧云
剧云

中文短剧剧本制作平台

Seko
Seko

AI短剧一键生成成片

Laper
Laper

剧本策划到成片协作

updream

一键生成高质量推广成片

php实时输出配合sse怎么做_php实时输出sse推送教程【教程】

轻婷酱_2978

轻婷酱_2978

发布时间:2026-01-29 13:37:02

|

923人浏览过

|

来源于php中文网

原创

PHP输出缓冲必须关闭,否则SSE无法实时推送;需设置正确响应头、严格遵循消息格式、处理连接断开与重连,并防止Web服务器及PHP-FPM中间层缓存。

php实时输出配合sse怎么做_php实时输出sse推送教程【教程】

PHP 输出缓冲必须关掉,否则 SSE 不会实时

SSE(Server-Sent Events)依赖服务端持续写入响应流,而 PHP 默认开启输出缓冲(output_buffering),会导致数据攒在缓冲区里不发出去。不关它,前端永远收不到第一条消息。

实操建议:

  • 脚本开头加 ob_end_flush() 和 ob_flush(),再调用 flush();更稳妥的做法是直接禁用:ini_set('output_buffering', 'Off')、ini_set('zlib.output_compression', 'Off')
  • Apache 下还要确认 mod_deflate 没对 SSE 响应做压缩(它会拦截并缓存响应),Nginx 则需关掉 gzip 或用 gzip off; 针对 SSE 路由
  • 如果用了 PHP-FPM,buffer_size 设为 0(或 0s)避免 FPM 层缓存

header 设置不能错,Content-Type 和 Cache-Control 是关键

SSE 要求响应头严格符合规范,漏掉或写错一个,浏览器就当普通 HTTP 响应处理,不会建立 EventSource 连接。

必须设置的 header:

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

HISUI 前端框架开发指南(IRIS版)
HISUI 前端框架开发指南(IRIS版)

HISUI 前端框架基础开发指南。HISUI 是基于 easyui 二次开发的 jQuery UI 组件库,专为医疗信息系统设计。当涉及 HISUI 组件开发、jQuery easyui 表格/表单/布局/窗口、医疗系统前端页面编写时使用此 skill。 涵盖 40 个组件的官方文档参考,支持声明式与编程式两种初始化方式,提供 $cm/$m 数据访问方法。

下载
  • header('Content-Type: text/event-stream') —— 类型错成 application/json 或漏掉,连接直接失败
  • header('Cache-Control: no-cache') —— 浏览器可能缓存初始响应,后续推送全失效
  • header('Connection: keep-alive') —— 显式声明长连接,避免代理/CDN 中断
  • 可选但推荐:header('X-Accel-Buffering: no')(Nginx)防止其内部缓冲

每条消息必须以 data: 开头,结尾用双换行

SSE 协议规定消息格式极其简单,但容错极低:字段名必须小写,冒号后要空格,每条消息末尾必须是两个 \n(即 \n\n)。少一个换行,浏览器就卡住不解析。

正确示例:

data: {"status":"ok","time":1716234567}

data: hello

常见错误:

  • 用 echo "event: ping\ndata: alive\n\n" 却忘了 echo 默认不带换行,得手动补 \n
  • JSON 字符串里混入 HTML 实体或未转义双引号,导致前端 JSON.parse() 报错
  • 循环中没控制频率,高频 echo + flush() 可能触发 Apache 的 TimeOut 或 Nginx 的 proxy_read_timeout

客户端 EventSource 连接断开后,重连逻辑得自己管

PHP 无法主动感知客户端断开(除非用心跳+超时检测),而浏览器 EventSource 在网络抖动或服务重启后会自动重连——但它只按固定规则重试(首次延迟 ~5s,之后指数退避),且不会传 cookie 或自定义 header。

实际要注意的点:

  • 后端别假设连接永久存在,每次 echo 前先检查 connection_status() === CONNECTION_NORMAL,否则可能向已断连接写数据,触发警告甚至进程终止
  • 需要鉴权?别依赖 session cookie(重连时不发),改用 URL 参数传 token,或前端初始化时先 fetch 一次获取临时凭证
  • 若需保证消息不丢,服务端得维护游标(如 last_id),客户端重连时带上上次收到的 ID,服务端从该位置继续推
SSE 看似简单,真正跑稳的关键不在“怎么发”,而在“怎么不让它被中间层吞掉”和“怎么扛住连接反复断”。很多问题不是代码写错了,而是 Apache/Nginx/PHP-FPM 的默认缓冲策略在背后悄悄改写了你的响应流。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

423

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

4187

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

7065

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

601

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1516

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3998

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

122

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

577

2026.01.13

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

80

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn