onWorkerStart里启动定时器一段时间后有连接执行2次的现像?

xquan

onWorkerStart里启动定时器,发现大概几分钟后同一时间连接执行了两次,打印也是有两次的,多次测试后确定这种现在,请问这是什么原因造成的?

    public static function onWorkerStart($worker) {

        //启动心跳检测定时器
        Timer::add(5, function(){

            echo '__start Timer' . "\n";
            foreach (self::$heartList as $key => $value) { 
                echo '22--' . "\n";
                if (self::$heartList < 1) {
                } else { //重置处理
                }
            }
        });
    }
4256 3 0
3个回答

walkor 打赏

可能是设置了2个进程,每个进程打印一次

  • 暂无评论
mrwu

你加个判断啊,如果你开启了多个进程,只在第一个进程执行心跳验证

if($worker->id == 0){
//执行心跳定时器
}

  • 暂无评论
xquan
    if($worker->id === 0) { 
        Timer::add(30.0, function(){

加了,短时间好像都不会有问题的

  • 暂无评论
年代过于久远,无法发表回答
×
🔝