如何运行工匠队列:从浏览器工作并将其发送到后台

时间:2016-11-14 19:55:41

标签: laravel laravel-5.3

在终端中,如果我运行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');

该命令有效,但它是一个无限循环,它只会阻止整个应用程序。

有没有办法运行队列:从应用程序工作并将其发送到终端中的背景?

1 个答案:

答案 0 :(得分:1)

这里应该分开两件事:

排队工作

Artisan::queue('command:name', $options);

这告诉Artisan,只要队列处理器正在工作,就执行command:name

运行工匠命令

从我的角度来看,这是你正在寻找的东西。要从您的应用程序执行特定的Artisan命令,您还可以在Artisan外观上使用call方法。

Artisan::call('queue:work');

另一个问题是您以错误的方式指定选项。试试这个:

Artisan::call('queue:work', ['--tries' => 3]);