workerman 下Timer如何固定某个时间执行任务

nauhein

由于之前都是使用crontab实现定时任务,可以指定每一天几点执行任务,
后面发现workerman很好用,可以自己建多个workerman跑任务,每个任务做自己的业务,
有些场景也许是需要一分钟或者20秒跑一次,但对于数据同步需要延迟一天的,
我只需要每天凌晨1点执行一次,但不知道workerman支不支持固定时间执行任务的

7069 3 0
3个回答

sm2010

貌似不支持的,我是这样做的

Timer::add(60*60, function(){
    if (date('H') == 1) {
        // 干活...
    }
});
  • 暂无评论
maq

复杂的任务排程,可以参考一下这个工具 https://github.com/mtdowling/cron-expression

基本上可以跟 crontab 一样来设置排程,然后用定时器每分钟跑一次就可以了。

当然如果你的需求没有那么复杂,只是固定每天凌晨 1 点执行一次的话,楼上的方法是最简单的了,执行效率也可能高一点。

  • 暂无评论
muyu

其实这种可以设置一个定时器,自动获取下次执行的时间,比如凌晨一点执行,启动服务计算下次凌晨一点还需要多少秒,这是一个一次性的定时器,执行完之后再次调用启动定时器的方法!这样应该就可以了!

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