在终端中,如果我运行php artisan queue:work --tries=3 &
命令将启动,并将发送到后台......
但是在Laravel中如果我运行Artisan::call('queue:work', ['--option' => 'tries=3'.' &']);
我收到此错误:
Symfony\Component\Console\Exception\InvalidOptionException: The "--option" option does not exist. in /var/www/html/laravel/exercise/vendor/symfony/console/Input/ArrayInput.php:172
Stack trace:
#0 /var/www/html/laravel/exercise/vendor/symfony/console/Input/ArrayInput.php(134): Symfony\Component\Console\Input\ArrayInput->addLongOption('option', 'tries=1 &')
如果我运行Artisan::queue('queue:work');
该命令有效,但它是一个无限循环,它只会阻止整个应用程序。
有没有办法运行队列:从应用程序工作并将其发送到终端中的背景?
答案 0 :(得分:1)
这里应该分开两件事:
排队工作
Artisan::queue('command:name', $options);
这告诉Artisan,只要队列处理器正在工作,就执行command:name
。
运行工匠命令
从我的角度来看,这是你正在寻找的东西。要从您的应用程序执行特定的Artisan命令,您还可以在Artisan外观上使用call
方法。
Artisan::call('queue:work');
另一个问题是您以错误的方式指定选项。试试这个:
Artisan::call('queue:work', ['--tries' => 3]);