在业务代码里写了sleep(10),请求后,看到浏览器是一直在转。然后修改代码,保存,webman会自动reload,可以看到请求立马结束了,没有在转了,这是不是说明reload后,原来的请求被暂停了?...
在控制器中,获取当前请求的id,每次都是1,就算在同一个进程里也是1,workerman文档中不是写了,这个id会自增 吗 print_r($request ->connection ->id );...
为了方便,每次从数据库中查到得数据,都会存放在一个类得变量里,因为是游戏行业,所有得数据都是根据用户id查得,放在类得缓存里,这样业务复杂,不同得函数里都调方法查询数据时,不用每次查数据。但是这样一来,这个类就会占据很大得内存,目前想得是,请求结束后,就把当前请求设置得变量内容清除掉,不知道用什么方法...
1、bussiness 开了8个进程,一台设备连接上后,发送了10多次消息,发现每次都是同一个进程在处理,这是因为正好如此还是workerman固定了一个连接建立后,后续消息都是同一个进程在处理 2、Gatewayworkderman分离部署,Gateway,bussiness 都可以部署多台,register能部署多台吗?如果部署多台,是不是会把Gateway bussiness 分割成多个集群...
目前公司考虑上k8s,没有运维,开发去部署。目前我想到的上k8s的话,有以下问题 单台机器 pod不固定,workerman进程数量没办法设置 如果把代码放入镜像中,每次修改代码后需要更新镜像,这样应该是不能做到平滑重启...
Trying to access array offset on value of type bool in file /var/www/workerman_gateway/vendor/workerman/workerman/Worker.php on line 770 项目运行在docker中,代码报错的地方是 $user_info = \posix_getpwuid(\posix_getuid()); ...
在onmessage里,直接 self::$globaldata_worker ->increment( 'process_cnt', 1 ); 发现最后process_cnt这个值有问题,取出来的值是null,貌似需要初始化为0才行,但是这个初始化不知道在什么时候进行...
gateway的bussinesswork中onmessage获得message是请求头,而不是客户端发送的信息 客户端 for( $i = 0;$i<=1;$i++ ){ $con = new AsyncTcpConnection('ws://x.x.x.x:8282'); $con ->onError = function(AsyncTcpConnection $con...
考虑到一个场景,当前有10万台设备连接,如果因为代码或者服务器原因,所有设备断开了连接,下次重启后,所有设备都会同时连上,因为连上后有些数据库和redis的操作,服务器完全抗不住。所以我想,如果一个gateway,同时有1000个正在发起连接,但是数据库和redis工作还没做完,后面设备发起连接时,直接拒绝这个请求。bussiness进程在处理完连接事件后,告诉gateway,gateway 就讲总的正在连接设备减1...
在gatewaywork的bussiness中使用redis-queue,onconnect时间中,给队列发送数据 /** * 当客户端连接时触发 * 如果业务不需此回调可以删除onConnect * * @param int $client_id 连接id */ public static function onConnect($client_id) ...
现在公司部署的gatewayworker在一台单机32核64g服务器上,现在要改成集群,看了文档,如果要改成集群,好像reload没用,要重新restart,文档写的是reload只对runall后面加载的文件有效。但是客户现在有10多万台设备在线,不想重新启动,因为重新启动会掉线。想问下有什么方案能改成集群,但是又不影响已经在线的设备...