SSE通过HTTP实现服务器向浏览器的单向实时推送,适合通知、日志等场景。使用PHP时需设置Content-Type: text/event-stream头,关闭缓存与压缩,禁用输出缓冲并防止超时,通过echo "data: ...\n\n"发送数据并调用flush()强制输出。前端用EventSource接收消息,支持自动重连与自定义事件。示例中每秒推送当前时间,需注意Nginx代理缓冲、函数权限及浏览器兼容性问题。

要实现实时数据从服务器推送到浏览器,SSE(Server-Sent Events)是一种轻量且高效的方式。相比WebSocket,SSE更简单,适合单向推送场景,比如通知、日志流、股票行情等。下面介绍如何使用PHP实现SSE(Server-Sent Events),并确保内容能实时输出。
SSE 允许服务器持续向浏览器发送文本数据。它基于HTTP协议,使用text/event-stream MIME类型,保持连接长期打开,直到关闭或出错。
主要特点:
要在PHP中启用SSE,需设置正确的响应头,并持续输出符合规范的数据格式。
立即学习“PHP免费学习笔记(深入)”;
1. 设置响应头告诉浏览器当前响应是 event stream 类型:
header('Content-Type: text/event-stream');SSE每条消息以data:开头,用两个换行符\n\n结束:
echo "data: Hello, this is a message\n\n";PHP默认会开启输出缓冲,需手动清除并防止脚本超时:
@set_time_limit(0); // 取消执行时间限制创建一个名为sse.php的文件:
<?php上面代码每隔1秒推送一次当前时间,共10次。
使用JavaScript的EventSource对象监听服务端事件:
<script>' + event.data + '
';当页面加载后,会自动连接到sse.php并实时显示推送内容。
在实际部署中,可能会遇到以下问题:
基本上就这些。SSE用起来不复杂,但容易忽略缓冲和超时设置。只要正确配置PHP输出行为,并配合前端EventSource,就能轻松实现服务端实时推送。适合不需要双向通信的轻量级实时功能。
以上就是PHP实时输出如何实现SSE_PHP Server-SentEvents实现教程的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号