public static function onWorkerStart($bk) { if ($bk->id == 0) { global $worker; $worker = new TestWorker(); } }
global $worker; Log::info('onMessage:msg:', );
用户进入房间 在onMessage 打印出来为什么是null
你只在0进程创建了$worker,其它进程onMessage里没有定义这个$worker,所以是null吧
那我怎么样在onMessage 里面获取到 0号进程 的这个全局变量
进程间变量是完全隔离的,每个进程都创建一个$worker就好了
不能每个都建一个worker吧, 我在TestWorker 里面创建了一个全局的定时器 没个都建一个 那不是同一个定时器跑了 4遍?
这个看你的意图是什么,比如你可以$worker = new TestWorker($bk->id); 把$bk->id传进去,只有$bk->id为0的时候创建定时器
你只在0进程创建了$worker,其它进程onMessage里没有定义这个$worker,所以是null吧
那我怎么样在onMessage 里面获取到 0号进程 的这个全局变量
进程间变量是完全隔离的,每个进程都创建一个$worker就好了
不能每个都建一个worker吧, 我在TestWorker 里面创建了一个全局的定时器 没个都建一个 那不是同一个定时器跑了 4遍?
这个看你的意图是什么,比如你可以$worker = new TestWorker($bk->id); 把$bk->id传进去,只有$bk->id为0的时候创建定时器