請問各路大神,使用gatewayworker,在events的onmessage回調中如何獲取到worker進程呢?
我想把業(yè)務處理中的定時器放在某個單獨的進程上執(zhí)行,該怎么處理呢
1、Events的每一個 onXXX 回調代表每一個獨立的業(yè)務進程;
2、如果只想在某個單獨的進程上運行,樣板代碼為:
class Events
{
public static function onWorkerStart($worker)
{
//比如只給0號進程設置定時器
if($worker->id === 0)
{
Timer::add(1, function(){
//業(yè)務邏輯
});
}
}
}
我想在onMessage中使用
if($worker->id === 0)
{
Timer::add(1, function(){
//業(yè)務邏輯
});
}
但是這個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? 拿到? 進程編號;