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

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

sm2010 - 男神

赞同来自:

貌似不支持的,我是这样做的
Timer::add(60*60, function(){
if (date('H') == 1) {
// 干活...
}
});
0

maq

赞同来自:

复杂的任务排程,可以参考一下这个工具 cron-expression

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

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

muyu

赞同来自:

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

要回复问题请先登录注册

退出全屏模式 全屏模式 回复