我正在从我的 Laravel 应用程序中的控制器运行 Artisan 命令。正如文档指定的那样,您可以像这样排队:
Artisan::queue('email:send', [
'user' => 1, '--queue' => 'default'
]);
这会处理队列逻辑,并且在我的情况下,将作业发送到 Redis,在那里它几乎立即得到处理。
我想推迟工作。您通常可以在调用队列命令时执行此操作,如下所示:
$job = (new SendReminderEmail($user))->delay(60);
$this->dispatch($job);
有没有办法加入这些功能,这样我就可以将我的 Artisan 命令延迟 5 分钟?我认为有一个简单的选择来延迟它。
如果没有,我可以创建另一个 Job 类来站在我的控制器和 Artisan 命令之间,我可以以正常方式排队并延迟,然后让该 Job 调用我的 Artisan 命令。但这似乎是一种非常复杂的使它起作用的方法。有没有更好的方法来延迟排队的 Artisan 命令?
谢谢