【问题标题】:Laravel Queue worker on HerokuHeroku 上的 Laravel 队列工作者
【发布时间】:2015-04-30 00:05:21
【问题描述】:

我在 Heroku 上运行 Laravel 5。我将 Laravel 队列用于后台任务。侦听队列并运行其作业的最可靠方法是什么?

【问题讨论】:

    标签: laravel heroku queue laravel-5


    【解决方案1】:

    像这样在heroku中设置配置变量(Laravel 5.6):

    QUEUE_DRIVER=database
    

    或者像这样在heroku中设置配置变量(Laravel 5.7):

    QUEUE_CONNECTION=database
    

    在没有运行的情况下启动worker dyno

    heroku ps:scale worker=1
    

    Procfile 看起来是这样的:注意:在 queue:work 之后指定要使用的驱动程序

    web: vendor/bin/heroku-php-apache2 public/
    worker: php artisan queue:restart && php artisan queue:work database --tries=3
    

    查看来自工作人员的消息

    heroku logs --ps worker
    

    跟踪来自工作人员的消息

    heroku logs --tail --ps worker
    

    【讨论】:

    • 如果将QUEUE_CONNECTION作为参数传递给queue:work,为什么还要指定它?
    • 啊,我想通了,代码中的dispatch调用需要它。
    【解决方案2】:

    如果您使用 Heroku 上的免费计划,很容易让工作进程运行以处理您的排队项目

    为了确保你同时运行 worker 和 web dynos

    heroku ps:scale
    

    在没有运行的情况下启动worker dyno

    heroku ps:scale worker=1
    

    Proc 文件如下所示:

    worker: php artisan queue:restart && php artisan queue:work --tries=3
    

    查看来自工作人员的消息

    heroku logs --ps worker
    

    【讨论】:

      【解决方案3】:

      更新:弃用通知

      php artisan queue:work -h
      
      --daemon    Run the worker in daemon mode (Deprecated)
      

      运行queue:work 会自动生成一个守护进程。不再需要该标志。


      对我来说,它使用 Redis 作为队列驱动程序并在 web 进程之外设置队列 @9​​87654323@ 进程。

      我的 Procfile 如下所示:

      web: vendor/bin/heroku-php-apache2 public/
      worker: php artisan queue:work redis --sleep=3 --tries=3 --daemon
      

      我真的不知道这是不是应该走的路,但现在可行。

      编辑:

      请注意,您正在这里启动另一个 dyno,所以如果您不使用 Heroku 上的免费层,现在价格翻倍。

      【讨论】:

      • --deamon 模式在 Heroku 上是否适合您?
      • @Till 是的。你有什么问题?
      【解决方案4】:

      我发现将队列工作器作为守护进程运行 Laravel docs 与 supervisord supervisor docs 一起使用时效果很好,它将监视进程并在它因任何原因失败时重新启动它。

      Laravel Forge 开箱即用地支持这一点,并为你提供了一个 GUI 来设置守护程序和主管任务,如果你愿意的话

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-21
        • 2022-10-20
        • 1970-01-01
        • 2018-03-11
        • 1970-01-01
        • 2018-11-12
        相关资源
        最近更新 更多