onWorkerStart global

onwnic
public static function onWorkerStart($bk)
{

    if ($bk->id == 0) {
        global $worker;
        $worker = new TestWorker();
    }
}
    global $worker;
    Log::info('onMessage:msg:', );

用户进入房间 在onMessage 打印出来为什么是null 

1837 1 0
1个回答

latin

你只在0进程创建了$worker,其它进程onMessage里没有定义这个$worker,所以是null吧

  • onwnic 2018-10-20

    那我怎么样在onMessage 里面获取到 0号进程 的这个全局变量

  • latin 2018-10-20

    进程间变量是完全隔离的,每个进程都创建一个$worker就好了

  • onwnic 2018-10-20

    不能每个都建一个worker吧, 我在TestWorker 里面创建了一个全局的定时器 没个都建一个 那不是同一个定时器跑了 4遍?

  • latin 2018-10-21

    这个看你的意图是什么,比如你可以$worker = new TestWorker($bk->id); 把$bk->id传进去,只有$bk->id为0的时候创建定时器

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