![](/img/trans.png)
[英]How does Laravel queue work and what if php artisan queue:listen stops
[英]What is the difference between artisan queue:work and artisan horizon:work?
我将 Laravel 队列和 Redis 与 Horizon 一起使用。 主管正在运行artisan horizon
,这反过来会产生进程/usr/bin/php7.2 artisan horizon:work redis
是否需要运行queue:work
或者 Horizon 已经可以自己处理队列?
安装Horizon后,Artisan queue:work
和horizon:work
命令执行相同的任务,但horizon:work
除外horizon:work
接受用于与Horizon主管协调的参数。
在运行Horizon管理程序进程时(通过artisan horizon
),我们永远不需要执行horizon:work
手动horizon:work
。 horizon:work
命令启动队列工作进程,主管在设置工作池时自动运行它。
通过主管 ,我的意思是Horizon经理流程,而不是我们用来启动Horizon作为服务的系统监督 。
事实上, horizon:work
被标记为隐藏 ,因此我们甚至不会在artisan list
显示的可用命令中看到它。
我们仍然可以执行artisan queue:work
手动artisan queue:work
以运行不受Horizon管理的单个独立队列工作程序。
artisan queue:work --once <connection>
命令更有用 - 它处理队列中的下一个待处理项,并可以帮助调试开发中的行为不端的作业。
为了使其有效,我们需要在停止任何长时间运行的队列工作程序后运行它,以便我们可以控制作业执行的时间。 Horizon让这一切变得简单:
php artisan horizon:terminate
Cy Rossignol 的回答是正确的。 但我会补充更多。
从官方文档中说:
Laravel Horizon 要求您使用 Redis 为队列供电。 因此,您应确保在应用程序的 config/queue.php 配置文件中将队列连接设置为 redis。
所以 Horizon 是 Laravel 工作器的增强版,具有仪表板和其他功能,但它仅适用于 Redis。 不像默认的 Laravel 队列工作程序支持文件、数据库和其他受 Laravel 支持的驱动程序。
使用 Horizon 的好处:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.