当前位置:首页 > PHP

php实现sse

2026-03-13 00:56:27PHP

PHP 实现 SSE(Server-Sent Events)

SSE 是一种服务器向客户端推送实时数据的协议,基于 HTTP 长连接。以下是使用 PHP 实现 SSE 的方法:

设置响应头

确保服务器返回正确的响应头,标识内容类型为 text/event-stream,并关闭缓存:

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

发送事件数据

SSE 数据格式遵循 field: value 规范。常用字段包括 event(事件类型)、data(内容)和 id(事件 ID):

php实现sse

echo "event: message\n";
echo "data: {\"time\": \"" . date('H:i:s') . "\"}\n\n";
flush();

保持连接循环

使用循环持续发送数据,并通过 ob_flush()flush() 强制输出缓冲区内容:

while (true) {
    $currentTime = date('H:i:s');
    echo "data: $currentTime\n\n";
    ob_flush();
    flush();
    sleep(1);
}

客户端代码示例

HTML 前端通过 EventSource API 接收 SSE 数据:

php实现sse

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

断开连接处理

在 PHP 中检测客户端是否断开连接,避免资源浪费:

if (connection_aborted()) {
    break;
}

完整示例代码

服务器端 sse.php

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

while (true) {
    $data = json_encode(['time' => date('H:i:s')]);
    echo "data: $data\n\n";
    ob_flush();
    flush();

    if (connection_aborted()) break;
    sleep(1);
}
?>

注意事项

  • 避免在 SSE 连接中执行长时间阻塞操作,确保数据及时推送。
  • 生产环境建议增加错误处理逻辑,例如数据库连接失败时的重试机制。
  • 对于高并发场景,需考虑服务器性能优化(如使用 Redis 发布订阅模式)。

标签: phpsse
分享给朋友:

相关文章

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form action=…

php实现队列

php实现队列

PHP实现队列的方法 队列是一种先进先出(FIFO)的数据结构,PHP可以通过多种方式实现队列功能。 使用数组模拟队列 PHP数组可以模拟队列的基本操作,通过array_push和array_shi…

php购物车实现

php购物车实现

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

基于php的设计与实现

基于php的设计与实现

PHP 设计与实现的关键要素 环境搭建与框架选择 PHP开发需配置服务器环境(如Apache/Nginx)、PHP版本(建议7.4+)及数据库(MySQL/MariaDB)。主流框架包括Laravel…

php 实现类

php 实现类

PHP 类的基本实现 在 PHP 中,类通过 class 关键字定义,后跟类名和一对花括号。类名通常遵循大驼峰命名法(如 ClassName)。以下是基本语法: class ClassName {…

php实现mvc

php实现mvc

PHP 实现 MVC 架构 MVC(Model-View-Controller)是一种常用的软件设计模式,将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller…