首页 > 解决方案 > 链中的所有作业都没有在 laravel 任务调度中执行?

问题描述

我试图在 laravel 任务调度中链式运行三个作业,kernel.php但它只执行第一个作业而忽略其他两个作业。

kernel.php

protected function schedule(Schedule $schedule)
{

    // $schedule->job(new \App\Jobs\FetchEmailAttachment)->everyMinute();
    // $schedule->job(new \App\Jobs\SplitAttachment)->everyMinute();
    // $schedule->job(new \App\Jobs\ResendAttachment)->everyMinute();

    $schedule->job((new \App\Jobs\FetchEmailAttachment)->chain([
        new \App\Jobs\SplitAttachment,
        new \App\Jobs\ResendAttachment
    ]), 'mailbox')->everyMinute();


}

我想一一运行链中的所有作业。

标签: laravellaravel-5laravel-jobs

解决方案


不幸的是,没有记录调度链式队列作业,但静态使用$schedule->call和调用可能会起作用:withChain

$schedule->call(function () {
    \App\Jobs\FetchEmailAttachment::withChain([
        new \App\Jobs\SplitAttachment,
        new \App\Jobs\ResendAttachment
    ])->dispatch()->allOnQueue('mailbox');
})->everyMinute();

PS:我还没有测试过,如果它有效,请告诉我们。


推荐阅读