求解connections和进程之间的关系

isjx

问题由来:我使用tcp长连接,在广播消息的时候

foreach ($tcp_worker->connections as $key => $value) {
    $value->send($cmd_Hex);
}

,假设此时进程$worker->count设置为1,有三个链接,那么此时会循环三次,而当我$worker->count设置为多个时,不管有几个连接都只会循环1此,导致客户端接收不到消息,我个人理解应该循环count*connections次才对

希望能详细解释一下connections与进程之间的关系,以及为何会出现这个问题

1960 1 0
1个回答

xiuwang

进程间connections变量是独立的,不共享的。
A 连接连到进程1, B连接连到进程2,2进程的connections的变量只包含B连接,没有A连接。
所以会有这个问题

  • isjx 2018-07-10

    是这样,但是我并没有指定foreach 某个进程里的connection,如果foreach ($tcp_worker->connections )的话具体是哪个进程里的是随机的吗

  • xiuwang 2018-07-12

    A进程foreach 只能是A进程自己的 connections

  • xiuwang 2018-07-12

    每个进程都有自己的connections,他们是独立的

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