当前位置:首页 > PHP

php 实现sse

2026-03-12 22:55:26PHP

PHP 实现 SSE(Server-Sent Events)

SSE(Server-Sent Events)是一种允许服务器向客户端推送实时数据的协议。以下是使用 PHP 实现 SSE 的详细方法:

设置 HTTP 头部

确保服务器发送正确的 HTTP 头部以启用 SSE。需要在 PHP 脚本中设置以下头部:

header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
header('Connection: keep-alive');

发送事件数据

SSE 数据格式要求每条消息以 data: 开头,并以双换行符 \n\n 结束。例如:

echo "data: This is a message\n\n";
flush();

示例代码

以下是一个完整的 PHP SSE 实现示例,每秒推送一次时间戳:

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
header('Connection: keep-alive');

while (true) {
    $currentTime = date('Y-m-d H:i:s');
    echo "data: The server time is: {$currentTime}\n\n";
    flush();

    // 暂停 1 秒
    sleep(1);
}
?>

客户端连接

客户端可以使用 JavaScript 的 EventSource API 连接到 SSE 服务:

const eventSource = new EventSource('sse.php');
eventSource.onmessage = function(e) {
    console.log(e.data);
};

注意事项

  • 确保 PHP 脚本不会超时,可以在脚本开始时设置 set_time_limit(0)
  • 避免在循环中频繁输出大量数据,可能导致服务器负载过高。
  • 如果需要终止连接,服务器可以发送一个特殊事件(如 event: end),客户端监听后关闭连接。

高级用法

可以发送自定义事件类型,客户端可以监听特定事件:

echo "event: customEvent\ndata: Custom data\n\n";
flush();

客户端监听自定义事件:

php 实现sse

eventSource.addEventListener('customEvent', function(e) {
    console.log(e.data);
});

通过以上方法,可以轻松实现 PHP 的 SSE 功能,适用于实时通知、日志推送等场景。

标签: phpsse
分享给朋友:

相关文章

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…

php 实现下载

php 实现下载

PHP 实现文件下载的方法 使用 PHP 实现文件下载可以通过设置 HTTP 头信息,强制浏览器将文件作为附件下载而非直接打开。 基本下载实现 $file_path = 'path/to/your/…

php 实现单链表

php 实现单链表

单链表的基本概念 单链表是一种线性数据结构,由节点组成,每个节点包含数据域和指向下一个节点的指针域。链表的头节点是访问整个链表的入口。 单链表的节点类实现 在PHP中,可以通过类来定义链表节…

无限分类实现 php

无限分类实现 php

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、部门架构等。以下是几种常见的实现方式: 邻接列表模式(Adjacency List) 邻接列表是最简单的实现方式,通过在每个记录…

php 实现评论

php 实现评论

实现 PHP 评论功能 数据库设计 创建数据库表存储评论数据,通常包含以下字段: id:评论唯一标识 user_id:用户ID content:评论内容 created_at:评论时间 parent…

php https实现

php https实现

PHP 中实现 HTTPS 的方法 在 PHP 中实现 HTTPS 主要通过配置服务器和编写代码来确保通信的安全性。以下是几种常见的方法: 配置服务器支持 HTTPS 确保服务器已安装 SSL/T…