channel组件的多个进程,如何实现每个进程处理不同的用户产生的订阅事件?

jackie_lt

设置了$worker->count = 4;每个worker都作为channel组件的client连接了server,都订阅了某个事件.每次publish事件时候,四个进程都响应了这个事件。我只想要一个进程响应该事件。多用户请求同时出发publish事件时候分给这四个进程分别去处理。

1859 1 0
1个回答

six

只让一个进程监听这个事件,代码类似

$worker = new Worker('websocket://0.0.0.0:1234');
$worker->onWorkerStart = function($worker){
    // 只在0号进程监听某个事件
    if ($worker->id == 0) {
        Channel::on('事件', functiong(){});
    }
};
  • jackie_lt 2019-12-06

    一个进程处理这个事件可能会不够,我最后还是决定改为队列+多进程来处理这个问题了。谢谢你的回答

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