首页 文章

Laravel队列工作立即开始

提问于
浏览
0

我有一个laravel队列设置到数据库 . 当我运行 dd(env('QUEUE_DRIVER')) 时,我得到了 database . 当我创建一份工作时,它会立即运行 . 我希望这份工作排队等到我运行 php artisan queue:work . 我需要做什么才能让工作不立即运行 . 谢谢!

Edit 1:

发货代码:

for ($i=0; $i < 100; $i++) { 
        $job = new UpdateJob("");
        dispatch($job);
}

职位代码:

public function handle(){
    sleep(30);
    SlackApi::SendMessage("Job!");
}

当我运行这个时,我每隔30秒就得到一条松弛的消息 . 但这些作业都没有存储在数据库中 .

Edit 2:

即使我将 ->delay(Carbon::now()->addMinutes(10)) 添加到作业中,作业仍然会立即运行 .

2 回答

  • 1

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

  • 0

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

相关问题