当前位置:首页 > PHP

php 实现长连接

2026-02-27 13:39:54PHP

PHP 实现长连接的方法

使用 header() 函数设置连接保持

通过设置 HTTP 头信息实现长连接,适用于简单的 HTTP 长连接场景。

header("Connection: keep-alive");
header("Keep-Alive: timeout=60, max=1000");

timeout 指定连接保持时间(秒),max 指定最大请求次数。

php 实现长连接

结合 ob_flush()flush() 实现服务器推送

适用于需要服务器主动推送数据的场景(如实时通知)。

php 实现长连接

// 关闭输出缓冲
while (ob_get_level() > 0) ob_end_flush();

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

while (true) {
    echo "data: " . date('Y-m-d H:i:s') . "\n\n";
    ob_flush();
    flush();
    sleep(1);
}

使用 Swoole 扩展实现高性能长连接

适用于需要高并发长连接的场景(如聊天室)。

$server = new Swoole\WebSocket\Server("0.0.0.0", 9501);

$server->on('open', function ($server, $request) {
    echo "connection open: {$request->fd}\n";
});

$server->on('message', function ($server, $frame) {
    $server->push($frame->fd, "Server: {$frame->data}");
});

$server->on('close', function ($server, $fd) {
    echo "connection close: {$fd}\n";
});

$server->start();

数据库持久连接

通过 pconnect() 实现数据库长连接,减少连接开销。

$link = mysql_pconnect("localhost", "user", "password");
if (!$link) {
    die('Could not connect: ' . mysql_error());
}

注意事项

  • HTTP 长连接受限于浏览器和服务器配置,非真正的双向通信
  • 长时间运行的脚本需设置 set_time_limit(0)
  • WebSocket 实现需浏览器支持,服务端推荐使用 Swoole/Workerman
  • 保持连接会占用服务器资源,需合理设置超时时间

标签: php
分享给朋友:

相关文章

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session…

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php实现表单

php实现表单

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

php 实现下载

php 实现下载

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

php实现一个

php实现一个

PHP 实现一个简单的计算器 创建一个基本的计算器,支持加、减、乘、除运算。以下是一个完整的实现代码示例: <?php $result = ""; if ($_SERVER["REQUEST…

php 实现单点登录

php 实现单点登录

PHP 实现单点登录的方法 单点登录(SSO)允许用户通过一次登录访问多个相互信任的系统。以下是基于 PHP 的实现方案: 基于共享 Session 的方案 在同一个主域名下的子域名间可以通过共享…