为了账号安全,请及时绑定邮箱和手机立即绑定

swoole构造一个服务器用于和多个设备客户端进行交互却频繁掉线。

swoole构造一个服务器用于和多个设备客户端进行交互却频繁掉线。

PHP
白猪掌柜的 2019-03-01 07:13:59
设备的客户端的心跳包中有一个设备重启标志(第一次连接上重启标志会清空。掉线之后重启标志又会出现。)我将服务端开设正在7777端口。netstat -nat | grep -iw "7777" | wc -l查看端口连接的线程只有600个左右。 可是查看数据库发现设备重启的很频繁。几乎每时每分钟都有不同的设备重启。请问怎么查看到底是swoole的服务端构造的有问题还是设备网络不稳定。!!!求指教。!!!我的代码是这样的。    date_default_timezone_set('PRC');     ini_set('max_execution_time', '0');     ini_set('date.timezone','Asia/Shanghai');     $serv = new \swoole_server("0.0.0.0", 7777);      $serv->set(array(        'heartbeat_check_interval' => 600,  //心跳检测,会触发onClose事件回调     ));     $serv->on('connect', function ($serv, $fd) {         $fdinfo = $serv->connection_info($fd);              });     $serv->on('receive', function ($serv, $fd, $from_id, $data){        //接收逻辑在这里。没有什么长时间的等待内容。     });     $serv->on('close', function ($serv, $fd) {       //'Client: Close.'     });     $serv->start();
查看完整描述

1 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

从你的描述中应该是心跳的问题。建议搭配 heartbeat_idle_time 成对使用。客户端在固定的时间内向服务端发送心跳包表示我还存在。
关于心跳的文档地址

查看完整回答
反对 回复 2019-03-16
  • 1 回答
  • 0 关注
  • 655 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信