Laravel队列工作立即开始

时间:2017-06-29 05:38:49

标签: laravel queue

我有一个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))添加到作业中,作业仍然会立即运行。

2 个答案:

答案 0 :(得分:1)

问题似乎来自于从v5.1升级到v5.4我在app.php中向我的提供商添加了Illuminate\Bus\BusServiceProvider::class并修复了所有内容。

答案 1 :(得分:0)

是否有主管在运行?如果配置了主管,则队列将作为子工作,因为它已添加到队列中。如果您想要延迟派遣工作,您必须指定延迟。请查看https://laravel.com/docs/5.4/queues#delayed-dispatching了解更多详情