我在 Horizon 中使用 Laravel 队列和 Redis。主管正在运行artisan horizon
,这反过来又产生了进程/usr/bin/php7.2 artisan horizon:work redis
是否需要运行queue:work
或者 Horizon 已经可以自己处理队列?
我在 Horizon 中使用 Laravel 队列和 Redis。主管正在运行artisan horizon
,这反过来又产生了进程/usr/bin/php7.2 artisan horizon:work redis
是否需要运行queue:work
或者 Horizon 已经可以自己处理队列?
安装 Horizon 后,Artisanqueue:work
和horizon:work
命令执行相同的任务,除了horizon:work
接受用于与 Horizon 主管协调的参数。
在运行 Horizon 主管进程时(通过artisan horizon
),我们永远不需要horizon:work
手动执行。该horizon:work
命令启动一个队列工作进程,主管在设置工作池时自动运行它。
这里的supervisor是指Horizo n manager 进程,而不是我们用来启动 Horizon 作为服务的系统supervisord 。
事实上,horizon:work
被标记为hidden,所以我们甚至不会在 显示的可用命令中看到它artisan list
。
我们仍然可以artisan queue:work
手动执行以运行不受 Horizon 管理的单个独立队列工作程序。
该artisan queue:work --once <connection>
命令更有用——它处理队列中的下一个待处理项目,并有助于调试开发中的行为不端的作业。
为了使其有效,我们需要在停止任何长时间运行的队列工作程序后运行它,以便我们可以控制作业何时执行。Horizon 让这一切变得简单:
php artisan horizon:terminate