GatewayWorker进程问题

我设置了2个BusinessWorker进程,0为定时器进程,在收消息的时候把进程重订,只能进入1
$gateway->router = function($worker_connections, $client_connection, $cmd, $buffer)
{
//0为删除定时器 不能被阻塞
unset($worker_connections[MyIp.':Route-Worker:0']);
return $worker_connections[array_rand($worker_connections)];
};
会出现同时执行两个的情况(因为业务需要前台每个用户会有两个websocket连接,每个消息会在每个websocket里发送给后台).
我在接收信息的时候打印出来的值就会有异常,我在接收消息的时候同时打印***和=== 应该是***===一行,但是会出现******======.不知道是否是我逻辑有问题还是怎么,如果消息都进同一个进程,处理逻辑不应该是处理完一个之后再处理下一个消息?求大神讲解!!
public static function onMessage($client_id, $message)
{
echo "***";
echo "===\n";
}
微信图片_20190508192919.png
已邀请:

blogdaren - 喜欢分享的PHP码农【http://www.blogdaren.com】

赞同来自:

1、unset 逻辑没有问题, 这个逻辑即代表gateway将消息转发到了某台businessworker机器的1号进程
2、数据展示看似异常,其实是正常的,这只是终端显示的问题而已,你可以打印数据时,顺带打印上进程ID: posix_getpid(),就能看到你需要的。

要回复问题请先登录注册