GatewayWorker进程问题

黑老怪

我设置了2个BusinessWorker进程,0为定时器进程,在收消息的时候把进程重订,只能进入1

$gateway->router = function($worker_connections, $client_connection, $cmd, $buffer)
{
    //0为删除定时器  不能被阻塞
    unset($worker_connections);
    return $worker_connections;
};

会出现同时执行两个的情况(因为业务需要前台每个用户会有两个websocket连接,每个消息会在每个websocket里发送给后台).
我在接收信息的时候打印出来的值就会有异常,我在接收消息的时候同时打印和=== 应该是===一行,但是会出现**======.不知道是否是我逻辑有问题还是怎么,如果消息都进同一个进程,处理逻辑不应该是处理完一个之后再处理下一个消息?求大神讲解!!

public static function onMessage($client_id, $message)
{
    echo "***";
    echo "===\n";
}
2885 1 0
1个回答

phpcreeper

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

年代过于久远,无法发表回答
×
🔝