Heroku的Laravel队列工作者

时间:2015-02-27 10:03:37

标签: laravel heroku queue laravel-5

我在Heroku上运行Laravel 5。我使用Laravel Queue进行后台任务。什么是最可靠的方式来收听队列并运行它的工作?

4 个答案:

答案 0 :(得分:8)

更新:弃用通知

php artisan queue:work -h

--daemon    Run the worker in daemon mode (Deprecated)

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

对我来说,它使用Redis作为队列驱动程序,并为worker进程另外设置了一个队列web进程。

我的Procfile看起来像这样:

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

我真的不知道这是不是应该采用的方式,但它现在有效。

修改

注意,你在这里开始另一个dyno,所以如果你没有在Heroku上使用免费套牌,它现在是价格的两倍。

答案 1 :(得分:1)

像这样(Laravel 5.6)在heroku中设置config var:

QUEUE_DRIVER=database

或者像这样(Laravel 5.7)在heroku中设置config var:

QUEUE_CONNECTION=database

在不运行的情况下启动辅助测功机

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

答案 2 :(得分:0)

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

Laravel Forge支持开箱即用,并为您提供设置守护程序和主管任务的GUI,如果这是您更喜欢的话

答案 3 :(得分:0)

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

为确保同时运行worker和网络测功机

heroku ps:scale

在不运行的情况下启动辅助测功机

heroku ps:scale worker=1

Proc文件如下:

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

查看来自工作人员的消息

heroku logs --ps worker