gatewayworker在events的onmessage回调中如何获取到worker进程

0

请问各路大神,使用gatewayworker,在events的onmessage回调中如何获取到worker进程呢?
我想把业务处理中的定时器放在某个单独的进程上执行,该怎么处理呢

已邀请:

blogdaren - 常年游走于 Linux、PHP、C、VIM 之间【http://www.phpcreeper.com】

赞同来自: whe74120

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  拿到  进程编号;

blogdaren - 常年游走于 Linux、PHP、C、VIM 之间【http://www.phpcreeper.com】

赞同来自:

1、Events的每一个 onXXX 回调代表每一个独立的业务进程;
2、如果只想在某个单独的进程上运行,样板代码为:


class Events
{
public static function onWorkerStart($worker)
{
//比如只给0号进程设置定时器
if($worker->id === 0)
{
Timer::add(1, function(){
//业务逻辑
});
}
}
}

whe74120

赞同来自:

我想在onMessage中使用


if($worker->id === 0)
{
Timer::add(1, function(){
//业务逻辑
});
}

但是这个worker 怎么来的呢

whe74120

赞同来自:

图片
这个$worker 怎么传进来呢 在onworkerstart中你那样写没问题啊 但在onmessage中就不行了

要回复问题请先登录注册