首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
客户端主动断开连接 connections 和 isEstablished 函数进行判断依然存在问题
服务器刚开启的时候是没问题的,但当程序运行一段时间后connections内的连接就出现问题了 ```php //判断用户是否在线 public function getOnlineUser2() { $data['onlineuser']=array(); $data['arr']=array(); foreach ($_SERVER['ws_server']->connections as $fd) { if ($_SERVER['ws_server']->isEstablished($fd)) { $data['arr'][]=$fd; } } foreach ($_SERVER['user_table'] as $k){ $data['onlineuser'][$k['fd']]=$k['uid']; } jsonReturn(1,'请求成功',$data); } ``` 这个函数分别打印了出两个数组, onlineuser 是我存在table中的连接用户 arr 是swoole 函数connections打印出的连接用户 现在 当客户端断开连接后,能够触发服务端onclose回调将用户从table中删除,但是打印connetions 并进行 isEstablished 后 仍能检测出断开的连接fd ```json { "code": 1, "message": "请求成功", "data": { "onlineuser": { "10730": 36, "10771": 34, "10778": 35 }, "arr": [ 6807, 6809, 6811, 6813, 10730, 10771, 10778, 6821, 6822, 6830, ] } } ```
发布于6年前 · 3 次浏览 · 来自
提问
aa11
服务器刚开启的时候是没问题的,但当程序运行一段时间后connections内的连接就出现问题了 ```php //判断用户是否在线 public function getOnlineUser2() { $data['onlineuser']=array(); $data['arr']=array(); foreach ($_SERVER['ws_server']->connections as $fd) { if ($_SERVER['ws_server']->isEstablished($fd)) { $data['arr'][]=$fd; } } foreach ($_SERVER['user_table'] as $k){ $data['onlineuser'][$k['fd']]=$k['uid']; } jsonReturn(1,'请求成功',$data); } ``` 这个函数分别打印了出两个数组, onlineuser 是我存在table中的连接用户 arr 是swoole 函数connections打印出的连接用户 现在 当客户端断开连接后,能够触发服务端onclose回调将用户从table中删除,但是打印connetions 并进行 isEstablished 后 仍能检测出断开的连接fd ```json { "code": 1, "message": "请求成功", "data": { "onlineuser": { "10730": 36, "10771": 34, "10778": 35 }, "arr": [ 6807, 6809, 6811, 6813, 10730, 10771, 10778, 6821, 6822, 6830, ] } } ```
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
还没有评论!