场景如下:
在同一进程中
12:00 有个任务A 执行时间2分钟
12:01 有个任务B 执行时间10秒
期望是 A任务执行完就跟着执行B任务, 现实是A任务执行了2分钟, 超过了B任务触发时间,B任务就不执行了
// 代码如下
protected function execute()
{
$worker = new Worker();
$worker->onWorkerStart = function ($worker){
// 任务A 执行时间大于2分钟
new Crontab('0 05 11 * * *', function(){
for ($i = 0; $i < 130; $i++) {
var_dump('one: '.$i);
sleep(1);
}
});
// 任务B
new Crontab('0 06 11 * * *', function(){
var_dump('two');
});
};
$worker->runAll();
}
期望是无论任务A执行多久, 执行完之后接着执行任务B
Crontab应该只是校验A、B任务是否满足执行时间条件,满足条件时推送A、B任务至队列异步消费
任务执行时间过长可以一个进程一个任务,这样不会阻塞