【问题标题】:What is the difference between artisan queue:work and artisan horizon:work?工匠队列:工作和工匠地平线:工作有什么区别?
【发布时间】:2018-07-25 03:13:50
【问题描述】:

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

是否需要运行 queue:work 或者 Horizo​​n 已经可以自己处理队列?

【问题讨论】:

    标签: php laravel symfony laravel-5 laravel-horizon


    【解决方案1】:

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

    在运行 Horizo​​n 主管进程(通过artisan horizon)时,我们永远不需要手动执行horizon:workhorizon:work 命令启动一个队列工作进程,主管在设置工作池时自动运行它。

    supervisor 指的是 Horizo​​n 管理器进程,而不是系统的 supervisord,我们用于将 Horizo​​n 作为服务启动。

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

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

    artisan queue:work --once <connection> 命令更有用——它处理队列中的下一个待处理项目,并有助于调试开发中行为不端的作业。

    为了使其有效,我们需要在停止任何长时间运行的队列工作程序后运行它,以便我们可以控制作业何时执行。 Horizo​​n 让这一切变得简单:

    php artisan horizon:terminate
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-04
      • 2016-05-26
      • 2014-03-19
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多