手册上说“客户端定时每X秒(推荐小于60秒)向服务端发送特定数据,服务端设定为X秒没有收到客户端心跳则认为客户端掉线,并关闭连接触发onClose回调。” 而之所以推荐小于60秒是因为“很多路由节点会清理60秒内不活跃的连接,导致还没来得及发送心跳,连接就断开了。”参考自walker大大在https://wenda.workerman.net/question/4615 这个问题中的回复。 问题一:现在我设置的$ga...
如图所示,我的两台设备50127和50128,在onMessage()里打印出对应的client_id时,却发现两台设备对应的client_id一样,之前一直没遇到过这种情况。文档中说client_id是唯一的,请问大神这是什么原因导致的?...
1.平时晚上10点左右业务量都比较低了,但是昨天晚上BusinessWorker进程突然全没了,查看log日志,发现只有昨天凌晨时候有一次错误4,可能是有链接连接到register上了,但晚上10点左右日志并没有记录下来任何东西,应该不是这个错误吧。但保险起见,还是把注册地址改成127.0.0.1了($register = new Register('text://127.0.0.1:xxxx');)。在重启gate...
最近gatewayworker报错error3,error4,exit_status:11,exit_status:64000. 1:出现error4应该是自己的注册地址设置的有问题,现在已经改成了127.0.0.1; 2:查看文档http://wiki.workerman.net/Error3上面说有两个原因,一个是gateway和businessworker的registerAddress设置错误或不一致,一个是...
昨天晚上重启gateway的时候就有发现这个问题,守护进程启动成功之后,用status指令查看发现没有businessworker,然后我的设备也就一直连不上,之后就一直重启,最后就好了。然后今天重启的时候又出现了这个问题,也是重启多次后才连上了businessworker,然后因为其他原因又重启了一次,结果就一直连不上了,然后现在我把businessworker连接数调大,连接上了,请问这个原因是因为busines...
想请教一个问题,当我的设备在连上gateway后突然断开,是否可以通过$SESSION来获取这台设备id并更新对应的设备状态,因为我现在遇到的情况是我的设备断开了连接,触发了onclose但是$SESSION却没有值,导致无法运行update函数更新设备状态。手册上说客户端或服务端与Gateway进程的连接断开时触发onclose,而$_SESSION的生命周期与client_id对应socket连接的生命周期相同,...
大神,我用过的是gateway worker,现在发现服务器cpu很高,于是用top指令查看了一下,如左图所示,上面几个进程都占了很多cpu,然后用cd /proc/PIDID查看了一下对应的pid,发现如图右所示,cwd指向的都是gatewayworker文件夹,请问大神这该如何处理...
如下图所示,上边的是打印的mac地址,下边是在events文件里的onMessage()函数里写的代码,打印mac地址和ip,但是打印出来的mac地址确是本地局域网的mac地址,而且可能是因为设备用的是移动物联卡的缘故,它的ip貌似是动态ip,因为会变化,所以现在也无法通过ip来确认设备身份。 现在想请问大神以下几个问题 问题一:能否通过gatewayworker获取设备的mac地址? 问题二:如果可以,仅仅通过设备...
手册上说可以gatewayworker可以通过$_SERVER来获取对方ip,但是在局域网里面没办法判断信息的具体来源,无法具体到某一台设备,所以现在想获取mac地址,请问gatewayworker可以在收到对方发来的信息时获取对方的mac地址吗?...
大神,我想记录gatewayworker的业务日志,但Worker::$stdoutFile似乎只能在启动gatewayworker的时候创建文件,并不能按天来建立日志文件记录业务日志,我在workerman手册上看到logfile,如图所示,但是用file_put_contents打印数据会不会对gatewayworker的性能有什么影响?包括业务进程,业务处理时间什么的。目前我这边打印的数据,每条最多也不到一百个...
我服务端用的是gatewayworker,协议是tcp,客户端socket连接程序如图所示,现在遇到的问题是:当我调用客户端socket发送数据到服务器时,我只调用了一次,但是客户端会重复发送数据到服务器,大多数情况都是我发起调用后整整一分钟,客户端又自动重新向服务器发送数据,但也就重发一次,有想过是不是我客户端程序所在页面自动刷新了,但测试后发现并没有,所以在想是不是我socket程序有什么问题,还请大神指教...
我用gatewayworker时为了适应高并发将gateway进程调成了cpu核的4_3倍,将bussiness进程调为cpu核的4_1倍,我的cpu是双核,现在可支持并发量上去了,但是刚刚看文档才发现上面说的是gateway调成cpu核数相等,business调成cpu核数的三倍,瞬间懵了,请问大神这是什么情况,还有就是这个cpu核数是看我服务器的cpu核数吧,那我是要将gateway进程调成2吗?我这边是阻塞式I...
@walkor 我在git上下载了workerman压测代码workerman-bench-master,然后放在了gatewayworker同级目录下,然后启动start.php,再执行./benchmark -n10000 -h1 -c400 -p56789 127.0.0.1这段代码,端口和ip我都换成自己的了,但是系统显示no such file or directory,是我的压测代码位置放的不对吗?...
@walkor 你好,我用了你的这段程序进行gatewayworker压测;http://wenda.workerman.net/?/question/1453; 但我在终端运行时只显示1 connections complete ;con close 就没有了,而且在加了$con->transport = 'ssl'后,报php警告:stream socket client() : ssl: connecti...
你好,我在start.php中加入 Worker::$stdoutFile = '/tmp/stdout.log'写入程序,但程序中var_dump的内容并没有被写进该文件,debug模式时var_dump的内容是可以在终端看见的,请问你知道是什么原因 吗...