我创建了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"]);
但现在的问题是q2仅在q1完成后被选中,这意味着队列顺序执行但不是并行执行。
我使用sync
选项作为队列驱动程序。这也首先执行q1,然后仅在q1完成后才选择q2。
我的技术配置是。
Queue drive: database
Os: windows
Laravel version: 5.5, Lumen 5.4
Mysql Database.