已经onWorkerStart 准备了一个Timer了,定时为60秒
这个Timer里面有些任务要执行,执行中监控了时间
比如:目前执行时间已经到40秒了,待这次任务完毕后下次我想调整这个Timer间隔
$timeInt = 60;
Timer:add($timeInt, function(){
// 任务处理
// 假设到这里已经过去40秒
// 任务结束
// 最后
// 比如,这里我要调整 $timeInt = 60 + 40
// 此时Timer从原来的60秒执行一次变为了100秒执行一次
})
不知道描述清楚没有,能不能这么做?或者有其他更好的方案
不支持更改定时器间隔,需要删除重新添加
大佬,对于这种需求还有其他好的建议吗
我需求和你差不多,是需要每次间隔60秒运行一次,即从上次运行后开始计算60秒而不是每60秒;
改了下你试试应该OK的。
棒啊!函数体外面是不是还得套一层Timer?还是怎么来执行这个函数
你可以看看自身场景,我的场景是每次查询接口都需要等60秒后再执行下次查询,所以我是onWorkerStart时候就调用(首次查询),然后通过一次性timer进行下一次的查询。但按你上面发出来的信息,应该onWorkerStart 的时候直接调用一次task()就行了,task里面就有Timer默认60秒执行,执行完再计算下次执行时间设置一次性Timer
根据你的代码提示改造了一下,可控定时器,nice!!!
需要注意下,如果业务量大,如果只添加(Timer::add)而不删除的话,会不会导致生成大量Timer任务?最好Timer::del一下之前的