GatewayWorker每秒执行一次出现跳过的情况

小怪兽

情景是这样的:
每分钟会开场一局,也就是开了一个定时任务,每秒执行一次,去检测开场的。

但是出现某一局跳过的情况

$now_date = date("Y-m-d H:i:s", $now_date);
$lists = $db->select('*')
    ->from('game_room')
    ->where('start_at= :start_at AND status = 1')
    ->bindValues(array('start_at' => $now_date))
    ->query();

是什么情况下出现 一天几百局 就会有那么一两局被跳过

2484 1 0
1个回答

maq

定时器设置为“每秒执行一次”,但实际上并不能保证“每一秒”都一定会被执行一次。比如有可能两次执行的间隔是 1.01 秒,但恰好中间有整整一秒被跳过了。

  • 小怪兽 2018-05-02

    恩恩,这样啊,有没好的办法去解决这个情况呢

  • maq 2018-05-02

    方法要结合你自己的业务逻辑来想,比如:

    把 start_at= :start_at 改成 start_at <= :start_at 也许可行,但可能其它地方也需要有些改动。

  • 小怪兽 2018-05-02

    @3346:恩恩 这个我倒知道 是想看看有没改动小的处理方案 谢啦~

年代过于久远,无法发表回答
🔝