首页 > php框架 > Swoole > 正文

Swoole怎么获取服务器当前的连接列表

穿越時空
发布: 2025-09-24 15:14:01
原创
944人浏览过
答案:通过 $server->connections 获取 Swoole 当前活跃连接的 fd 列表,结合 isEstablished 和 connection_info 可管理连接状态,适用于广播、监控等场景。

swoole怎么获取服务器当前的连接列表

在 Swoole 中,获取服务器当前的连接列表可以通过 server->connections 属性来实现。这个属性是一个只读数组,保存了当前所有活跃的客户端连接的文件描述符(即 $fd)。

1. server->connections 的基本使用

该属性返回一个包含所有活动连接 $fd 的迭代数组。你可以遍历它来获取每个连接的信息。

示例代码:

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

$server->on('connect', function ($server, $fd) {
    echo "客户端 {$fd} 已连接\n";
});

$server->on('receive', function ($server, $fd, $reactor_id, $data) {
    // 获取当前所有连接
    $clients = $server->connections;
    echo "当前连接数: " . count($clients) . "\n";
    foreach ($clients as $client_fd) {
        echo "活跃连接 fd: {$client_fd}\n";
    }
    
    $server->send($fd, "已收到消息\n");
});

$server->start();
登录后复制

2. 注意事项和限制

Swoole 的连接列表仅保存 TCP 层面的连接 $fd,不包括关闭中的或已断开的连接。以下几点需要注意:
  • connections 是一个只读数组,不能手动修改
  • 在多进程模式下,connections 只包含当前 Worker 进程所管理的连接(Swoole 4.5+ 支持全局连接表)
  • 如果启用了 开启 reuseport 或多 Reactor,connections 仍能准确反映本进程的连接状态
  • UDP 连接不会出现在 connections 中(UDP 是无连接的)

3. 获取更多连接信息

单纯获取 $fd 可能不够,你可能还需要判断某个连接是否有效,或获取其相关信息。

可以结合以下方法使用:

飞书多维表格
飞书多维表格

表格形态的AI工作流搭建工具,支持批量化的AI创作与分析任务,接入DeepSeek R1满血版

飞书多维表格26
查看详情 飞书多维表格
  • $server->connection_info($fd):获取指定连接的详细信息,如来自哪个 reactor、连接时间、协议类型等
  • $server->isEstablished($fd):判断某个 $fd 是否为有效的 TCP 连接(适用于 WebSocket)

示例:过滤出有效的 WebSocket 连接

foreach ($server->connections as $fd) {
    if ($server->isEstablished($fd)) {
        echo "有效连接: {$fd}\n";
        $info = $server->connection_info($fd);
        print_r($info);
    }
}
登录后复制

4. 实际应用场景

常见用途包括:
  • 向所有客户端广播消息
  • 监控当前在线用户数
  • 主动踢掉某个异常连接
  • 实现心跳检测与超时管理

广播示例:

foreach ($server->connections as $fd) {
    if ($server->isEstablished($fd)) {
        $server->send($fd, "系统通知:即将重启服务!");
    }
}
登录后复制
基本上就这些。只要记住用 $server->connections 拿到所有 $fd,再配合 connection_infoisEstablished 判断状态,就能灵活管理连接列表。

以上就是Swoole怎么获取服务器当前的连接列表的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号