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