2

我正在创建 5 个名为 q1、q2..q5 的队列,每个队列都有一个要执行的作业。要同时运行所有 5 个作业,请将每个作业放在不同的队列中。

使用 artisan 命令,我可以在单独的控制台中运行每个队列

php artisan queue:work --queue:q1
php artisan queue:work --queue:q2
..
..
php artisan queue:work --queue:q5

我在控制台中使用上述命令取得了成功。但是现在我需要在不使用控制台的情况下在编码中执行上述命令。

所以我尝试使用下面的代码来执行。

\Illuminate\Support\Facades\Artisan::call("queue:work", ["--queue" => "q1"]);
\Illuminate\Support\Facades\Artisan::call("queue:work", ["--queue" => "q2"]);
..
..
\Illuminate\Support\Facades\Artisan::call("queue:work", ["--queue" => "q5"]);

但是现在的问题是,仅在 q1 完成后才选择 q2,这意味着队列按顺序执行,而不是并行执行。

我使用sync了队列驱动程序的选项。这也首先执行 q1,然后仅在 q1 完成后才选择 q2。

我的技术配置是。

Queue drive: database
Os: windows 
Laravel version: 5.5, Lumen 5.4 
Mysql Database.
4

0 回答 0