当前位置:首页 > 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实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 //…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERVER…

php购物车实现

php购物车实现

PHP购物车实现方法 使用PHP实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。用…

php数组实现

php数组实现

PHP 数组的基本实现 PHP 数组是一种非常灵活的数据结构,可以存储多个值,并且支持多种类型的键(整数或字符串)。PHP 数组实际上是有序映射(ordered map),可以看作是列表(vector…

php实现注册登陆

php实现注册登陆

PHP 注册功能实现 创建数据库表结构(MySQL示例): CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, usern…

php 购物车实现session

php 购物车实现session

PHP 购物车实现(基于 Session) 在 PHP 中,使用 Session 实现购物车功能是一种常见方法。Session 可以跨页面存储用户数据,适合临时保存购物车信息。 初始化 Sessio…