public static function onWorkerStart($worker)
{
Timer::add(5, function () {
if(empty(self::$heartbeat_queue)){
return;
}
StoreWs::where("id", 'in', self::$heartbeat_queue)->update(['heartbeat_time' => time()]);
self::$heartbeat_queue = [];
});
}
可这样子嵌套 ?
这样不用嵌套了吧,Timer::add(5+$worker->id, function () {}
周期就不是都5秒了
Timer::add前面加一句sleep($worker->id);
这样子不太好
是哪里不太好?我就是用的这种方案,用了十几年了目前没有任何问题····
估计你是想任务在不同进程不同时执行吧,我做过类似的,把任务按顺序分配到不同的进程。
是的周期都是5秒定时 但是不同时刻 执行
同时执行,但不同的进程不会对同一个queueId重复执行。