首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
Websocket服务运行一段时间后,订阅的Redis消息收不到了,重启后正常
### 问题描述 我是用Swoole做Websocket服务器,添加一个新的进程订阅Redis,运行一段时间后,Websocket还可以正常连接,Redis订阅的消息收不到了,重启后正常. ### Swoole版本,PHP版本,以及操作系统版本信息 PHP版本信息 ``` Version=> 7.4.3 ``` Swoole版本信息 ``` Version => 4.7.1 coroutine => enabled with boost asm context epoll => enabled eventfd => enabled signalfd => enabled cpu_affinity => enabled spinlock => enabled rwlock => enabled pcre => enabled mutex_timedlock => enabled pthread_barrier => enabled futex => enabled async_redis => enabled ``` ### 相关代码 ```php $server = new \Swoole\WebSocket\Server('0.0.0.0','8080'); $process = new \Swoole\Process(function () use ($server) { Redis::subscribe(['order_channel'], function ($message) use ($server) { echo '收到新的订单消息'.PHP_EOL; }); }); $server->addProcess($process); //连接成功回调 $server->on('open', function (\Swoole\WebSocket\Server $server, $request) { echo '连接成功'.$request->fd.PHP_EOL; }); //收到消息回调 $server->on('message', function (\Swoole\WebSocket\Server $server, $request) { echo '收到消息'.$request->fd.PHP_EOL; }); //关闭连接回调 $server->on('close', function (\Swoole\WebSocket\Server $server, $request) { echo '已关闭'.$request->fd.PHP_EOL; }); $server->start(); ```
发布于3年前 · 13 次浏览 · 来自
提问
Shenhai
### 问题描述 我是用Swoole做Websocket服务器,添加一个新的进程订阅Redis,运行一段时间后,Websocket还可以正常连接,Redis订阅的消息收不到了,重启后正常. ### Swoole版本,PHP版本,以及操作系统版本信息 PHP版本信息 ``` Version=> 7.4.3 ``` Swoole版本信息 ``` Version => 4.7.1 coroutine => enabled with boost asm context epoll => enabled eventfd => enabled signalfd => enabled cpu_affinity => enabled spinlock => enabled rwlock => enabled pcre => enabled mutex_timedlock => enabled pthread_barrier => enabled futex => enabled async_redis => enabled ``` ### 相关代码 ```php $server = new \Swoole\WebSocket\Server('0.0.0.0','8080'); $process = new \Swoole\Process(function () use ($server) { Redis::subscribe(['order_channel'], function ($message) use ($server) { echo '收到新的订单消息'.PHP_EOL; }); }); $server->addProcess($process); //连接成功回调 $server->on('open', function (\Swoole\WebSocket\Server $server, $request) { echo '连接成功'.$request->fd.PHP_EOL; }); //收到消息回调 $server->on('message', function (\Swoole\WebSocket\Server $server, $request) { echo '收到消息'.$request->fd.PHP_EOL; }); //关闭连接回调 $server->on('close', function (\Swoole\WebSocket\Server $server, $request) { echo '已关闭'.$request->fd.PHP_EOL; }); $server->start(); ```
赞
0
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
还没有评论!
微信公众号
热门内容
暂无回复的问答
- 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一直是同一个。没用使用到多进程啊。