工匠队列:工作和工匠视野:工作之间有什么区别?

Mar*_*ala 7 php symfony laravel laravel-5 laravel-horizon

我在Horizo​​n中使用Laravel队列和Redis。主管正在运行artisan horizon,这反过来会产生进程/usr/bin/php7.2 artisan horizon:work redis

是否需要完全运行queue:work,或者Horizo​​n 是否可以自行处理队列?

Cy *_*nol 6

安装了Horizo​​n后,Artisan queue:workhorizon:work命令执行相同的任务,除了horizon:work接受用于与Horizo​​n主管协调的参数。

在运行Horizo​​n Supervisor流程(通过artisan horizon)时,我们不需要horizon:work手动执行。该horizon:work命令启动队列工作程序进程,并且主管在设置工作程序池时自动运行它。

通过主管,我的意思是地平线管理器进程,而不是系统的supervisord我们用它来启动地平线作为一种服务。

实际上,horizon:work标记为隐藏,所以我们甚至在所示的可用命令中都看不到它artisan list

我们仍然可以artisan queue:work手动执行以运行不受Horizo​​n管理的单个独立队列工作器。

artisan queue:work --once <connection>命令更有用- 该命令处理队列中的下一个挂起的项目,并且可以帮助调试开发中行为异常的作业。

为了使此方法有效,我们需要在停止所有长时间运行的队列工作器之后运行它,以便我们可以控制作业的执行时间。Horizo​​n使这个变得容易:

php artisan horizon:terminate
Run Code Online (Sandbox Code Playgroud)