walkor你好,我的項目由于業(yè)務(wù)需要,在onmessage里面需要用到定時器,但是使用的過程中發(fā)現(xiàn)定時器無法正常關(guān)閉,我的思路是這樣的,在協(xié)議一里面出發(fā)一個五秒運行一次的定時器,把timer_id緩存到Store里面,然后在協(xié)議二里取出緩存的timer_id,刪除這個timer_id,但是運行之后定時器還在跑,這是什么原因?
部分代碼:
協(xié)議一:
$timer_id = Timer::add(5, function(){echo date('H:i:s',time()).'test begin!';}, array(), true);
$user_timers = Store::instance('gateway')->get('user_timers');
$user_timers[] = $timer_id;
Store::instance('gateway')->set('user_timers',$user_timers);
協(xié)議二:
$user_timers = Store::instance('gateway')->get('user_timers');
if(!empty($user_timers)){
foreach($user_timers as $val){
Timer::del($val);
}
unset($user_timers);
Store::instance('gateway')->set('user_timers',$user_timers);
}
試過使用delall好像也不行,希望能幫忙解答
好像找到了問題所在,是我給businessworker開了4個進(jìn)程,開一個就沒有這個問題,但是該怎么解決多進(jìn)程的問題呢,希望walker哥給點意見
參考路由章節(jié),設(shè)置固定路由,讓一個連接的數(shù)據(jù)都發(fā)到同一個worker上(可以直接用范例 2 隨機(jī)綁定)
http://workerman.net/gatewaydoc/gateway-worker-development/router.html
timer_id也可以存儲在$_SESSION中