timer定时器问题 顺序执行问题

tuep

timer定时器问题 顺序执行问题

场景如下:
在同一进程中
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

121 1 0
1个回答

Mr.Gong

Crontab应该只是校验A、B任务是否满足执行时间条件,满足条件时推送A、B任务至队列异步消费

  • luoyue 2026-04-01

    任务执行时间过长可以一个进程一个任务,这样不会阻塞

🔝