我使用的是Laravel队列和Horizon的Redis。主管正在运行artisan horizon,这反过来会产生进程/usr/bin/php7.2 artisan horizon:work redis。
是否需要运行queue:work,还是Horizon已经可以自己处理队列了?
发布于 2018-04-12 03:34:33
安装了Horizon后,Artisan queue:work和horizon:work命令执行相同的任务,但horizon:work接受用于与Horizon主管协调的参数。
在运行Horizon监控程序(通过artisan horizon)时,我们不需要手动执行horizon:work。horizon:work命令启动队列工作进程,监控器在设置工作池时自动运行它。
对主管而言,我指的是Horizon经理过程,而不是我们用来启动Horizon服务的系统的监督。
实际上,horizon:work被标记为隐藏,所以我们甚至不会在artisan list显示的可用命令中看到它。
我们仍然可以手动执行artisan queue:work来运行一个单独的、独立的队列工作器,它不是由Horizon管理的。
artisan queue:work --once <connection>命令更有用--它处理队列中的下一个挂起的项,并且可以帮助调试开发中的错误作业。
为了使其有效,我们需要在停止任何长时间运行的队列工作后运行它,这样我们就可以控制作业何时执行。地平线让这件事变得很简单:
php artisan horizon:terminate发布于 2022-08-20 13:20:25
塞·罗西格诺尔的回答是对的。但我会补充更多。
官方文件的记者说:
Laravel要求您使用Redis为您的队列供电。因此,您应该确保在应用程序的config/Quee.php配置文件中将队列连接设置为redis。
因此,地平线是拉拉维尔工人的仪表板和其他功能的增强,但它将只适用于Redis。不像默认的,它支持Laravel支持的文件、数据库和其他驱动程序。
使用地平线的好处:
https://stackoverflow.com/questions/48789024
复制相似问题