首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
子类创建心跳 listen 不生效,是为什么?父类创建又生效
1. 在提交问答前请尽可能回答以下问题: 2. 请详细描述问题的产生过程,贴出相关的代码,最好能提供一份可稳定重现的简单脚本代码。 ```php $this->serv = new swoole_websocket_server("0.0.0.0", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL); // websocket $this->serv->set([ 'ssl_cert_file' => __DIR__ . '/ssl.crt', // ssl密匙 'ssl_key_file' => __DIR__ . '/ssl.key', // ssl秘钥 'worker_num' => 2, //开启2个worker进程 'max_request' => 4, //每个worker进程 max_request设置为4次 //'task_worker_num' => 4, //开启4个task进程 // 'dispatch_mode' => 4, //数据包分发策略 - IP分配 'reload_async' => true, 'daemonize' => false, //守护进程(true/false) ]); $this->serv->on('Start', array($this, 'onStart')); $this->serv->on('Connect', array($this, 'onConnect')); $this->serv->on('message', array($this, 'onMessage')); $this->serv->on('Receive', array($this, 'onReceive')); $this->serv->on('WorkerExit', array($this, 'onWorkerExit')); $this->serv->on('Close', array($this, 'onClose')); $tcp = $this->serv->addListener("0.0.0.0", 9501, SWOOLE_SOCK_TCP); // 硬件mqtt $tcp->set([ 'worker_num' => 8, // 进程数 'daemonize' => false, // 守护进程化 'max_request' => 10000, // 进程的最大任务数 'open_mqtt_protocol' => true, // 启用 mqtt 协议 'heartbeat_idle_time' => 5, // 表示一个连接如果600秒内未向服务器发送任何数据,此连接将被强制关闭 'heartbeat_check_interval' => 2, // 表示每60秒遍历一次 // 'dispatch_mode' => 1, // 数据包分发策略:根据连接的文件描述符分配 Worker。这样可以保证同一个连接发来的数据只会被同一个 Worker 处理 ]); ``` 3. 期望的结果是什么? listen 创建的心跳能检测到是否断线 4. 实际运行的结果是什么? 心跳检测未生效 5. 你的版本? 贴出 `php --ri swoole` 所打印的内容 swoole 4.4.6 6. 你使用的机器系统环境是什么(包括内核、PHP、gcc编译器版本信息)?可以使用`uname -a`, `php -v`, `gcc -v` 命令打印 php7.3
发布于4年前 · 0 次浏览 · 来自
提问
栀沫@
1. 在提交问答前请尽可能回答以下问题: 2. 请详细描述问题的产生过程,贴出相关的代码,最好能提供一份可稳定重现的简单脚本代码。 ```php $this->serv = new swoole_websocket_server("0.0.0.0", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL); // websocket $this->serv->set([ 'ssl_cert_file' => __DIR__ . '/ssl.crt', // ssl密匙 'ssl_key_file' => __DIR__ . '/ssl.key', // ssl秘钥 'worker_num' => 2, //开启2个worker进程 'max_request' => 4, //每个worker进程 max_request设置为4次 //'task_worker_num' => 4, //开启4个task进程 // 'dispatch_mode' => 4, //数据包分发策略 - IP分配 'reload_async' => true, 'daemonize' => false, //守护进程(true/false) ]); $this->serv->on('Start', array($this, 'onStart')); $this->serv->on('Connect', array($this, 'onConnect')); $this->serv->on('message', array($this, 'onMessage')); $this->serv->on('Receive', array($this, 'onReceive')); $this->serv->on('WorkerExit', array($this, 'onWorkerExit')); $this->serv->on('Close', array($this, 'onClose')); $tcp = $this->serv->addListener("0.0.0.0", 9501, SWOOLE_SOCK_TCP); // 硬件mqtt $tcp->set([ 'worker_num' => 8, // 进程数 'daemonize' => false, // 守护进程化 'max_request' => 10000, // 进程的最大任务数 'open_mqtt_protocol' => true, // 启用 mqtt 协议 'heartbeat_idle_time' => 5, // 表示一个连接如果600秒内未向服务器发送任何数据,此连接将被强制关闭 'heartbeat_check_interval' => 2, // 表示每60秒遍历一次 // 'dispatch_mode' => 1, // 数据包分发策略:根据连接的文件描述符分配 Worker。这样可以保证同一个连接发来的数据只会被同一个 Worker 处理 ]); ``` 3. 期望的结果是什么? listen 创建的心跳能检测到是否断线 4. 实际运行的结果是什么? 心跳检测未生效 5. 你的版本? 贴出 `php --ri swoole` 所打印的内容 swoole 4.4.6 6. 你使用的机器系统环境是什么(包括内核、PHP、gcc编译器版本信息)?可以使用`uname -a`, `php -v`, `gcc -v` 命令打印 php7.3
赞
0
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
2020-04-17
郭新华
mqtt协议本身就有心跳机制,heartbeat_idle_time ,heartbeat_check_interval 这组配置的作用是kill不发包的连接。参考[我的课](https://course.swoole-cloud.com/course-video/10),mqtt会不停的发心跳.
赞
0
回复
2020-04-18
栀沫@
回复
郭新华
好的,谢谢了。。。
赞
0
回复
微信公众号
热门内容
作者其它话题
- 定时后报错????
- mqtt 发布后发布不成功???
- 连接MQTT订阅后,连接断开
- MQTT 添加配置后,无响应,这是为什么?
- MQTT
暂无回复的问答
- 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一直是同一个。没用使用到多进程啊。