首页 > 解决方案 > Laravel 作业实时执行而无需启动队列

问题描述

在 Laravel 5.8 上运行我正在创建大量作业,我认为一旦启动队列就应该执行这些作业。我的问题是,当我什至还没有开始排队时,作业就会在那里执行。

它们甚至没有被插入到jobs迁移创建的表中。

以下是我认为相关的设置和代码。如果需要更多信息,请告诉我。

在全新安装上:

php artisan queue:table
php artisan migrate

.env 文件

QUEUE_CONNECTION=database

创建了队列任务

class FulfillmentTask implements ShouldQueue{
//code here
}

控制器

use App\Jobs\FulfillmentTask;

//rest of the class here

public function somefunction(Request $request){
//some code here
//read csv file
foreach ($fileContents as $row){
            FulfillmentTask::dispatch($orderId, $client, $request->sendEmail)->onQueue('database');
        }
}

问题是执行 FulfillmentTask 时没有queue:work在终端中给出命令。

知道为什么会这样吗?

标签: laravellaravel-5queuelaravel-5.8

解决方案


“数据库”是一个队列连接。请将您的工作分派到该连接。

FulfillmentTask::dispatch($orderId, $client, $request->sendEmail)->onConnection('database');

这似乎是默认连接,因此您只需调度作业。

FulfillmentTask::dispatch($orderId, $client, $request->sendEmail);


推荐阅读