首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
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, ] } } ```
发布于4年前 · 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
评论
还没有评论!
微信公众号
热门内容
作者其它话题
- websocket 开启ssl 报 WARNING swSSL_accept: bad SSL client[unknown:0], reason=156, error_string=error:0000009C:lib(0):func(0):reason(156)
暂无回复的问答
- CodeGalaxy K3s 轻量集群节点之间如何实现负载均衡
- 关于openssl CURL WARNING swSSL_connect: SSL_connect(fd=69) failed. Error: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small[1|394]
- 多个模型如何进行事务异常回退?
- websocket开启wss报错
- 协程tcp服务器如何使用多进程?recv()方法接收信息,打印出来的pid一直是同一个。没用使用到多进程啊。