【发布时间】:2017-12-02 16:20:48
【问题描述】:
我有一个数据库的 laravel 队列设置。当我运行dd(env('QUEUE_DRIVER')) 时,我得到database 回来。当我创建工作时,它会立即运行。我希望在运行php artisan queue:work 之前将作业排队。我需要做什么才能让工作不立即运行。谢谢!
编辑 1:
调度代码:
for ($i=0; $i < 100; $i++) {
$job = new UpdateJob("");
dispatch($job);
}
职位代码:
public function handle(){
sleep(30);
SlackApi::SendMessage("Job!");
}
当我运行它时,我每 30 秒收到一条松弛消息。但是这些作业都没有存储在数据库中。
编辑 2:
即使我将->delay(Carbon::now()->addMinutes(10)) 添加到作业中,作业仍然会立即运行。
【问题讨论】:
-
当您将作业放入队列时,它会尽快运行。当您必须执行许多任务时为目的而创建的作业功能,因此它们在队列中排队并会一一执行。或许这篇文章可以帮到你:laracasts.com/discuss/channels/laravel/…
-
向我展示你在哪里分配工作的代码行
-
@vietnguyen09 查看编辑
-
您没有运行
queue:work,但仍然看到新记录插入到您的数据库中? -
我没有运行队列:工作刚刚完成。而且我在数据库中看不到任何东西。