请问各路大神,使用gatewayworker,在events的onmessage回调中如何获取到worker进程呢? 我想把业务处理中的定时器放在某个单独的进程上执行,该怎么处理呢
1、Events的每一个 onXXX 回调代表每一个独立的业务进程; 2、如果只想在某个单独的进程上运行,样板代码为:
class Events { public static function onWorkerStart($worker) { //比如只给0号进程设置定时器 if($worker->id === 0) { Timer::add(1, function(){ //业务逻辑 }); } } }
我想在onMessage中使用
if($worker->id === 0) { Timer::add(1, function(){ //业务逻辑 }); }
但是这个worker 怎么来的呢
[attach]2465[/attach] 这个$worker 怎么传进来呢 在onworkerstart中你那样写没问题啊 但在onmessage中就不行了
onMessage 中需要间接来玩: 1、先给Events引入一个属性如: static public $worker = null ; 2、在onWorkerStart 中:
public static function onWorkerStart($worker) { empty(self::$worker) && self::$worker = $worker; }
3、然后 onMessage 中就可以通过 self::$worker->id 拿到 进程编号;
了解了 非常感谢
1、Events的每一个 onXXX 回调代表每一个独立的业务进程;
2、如果只想在某个单独的进程上运行,样板代码为:
我想在onMessage中使用
但是这个worker 怎么来的呢
[attach]2465[/attach]
这个$worker 怎么传进来呢 在onworkerstart中你那样写没问题啊 但在onmessage中就不行了
onMessage 中需要间接来玩:
1、先给Events引入一个属性如: static public $worker = null ;
2、在onWorkerStart 中:
3、然后 onMessage 中就可以通过 self::$worker->id 拿到 进程编号;
了解了 非常感谢