Heroku的Laravel队列工作者

Til*_*ill 11 queue heroku laravel laravel-5

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

ene*_*aya 10

更新:弃用通知

php artisan queue:work -h

--daemon    Run the worker in daemon mode (Deprecated)
Run Code Online (Sandbox Code Playgroud)

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


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

我的Procfile看起来像这样:

web: vendor/bin/heroku-php-apache2 public/
worker: php artisan queue:work redis --sleep=3 --tries=3 --daemon
Run Code Online (Sandbox Code Playgroud)

我真的不知道这是不是应该去的方式,但它现在有效.

编辑:

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


小智 10

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

QUEUE_DRIVER=database
Run Code Online (Sandbox Code Playgroud)

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

QUEUE_CONNECTION=database
Run Code Online (Sandbox Code Playgroud)

启动worker dyno以防它没有运行

heroku ps:scale worker=1
Run Code Online (Sandbox Code Playgroud)

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

web: vendor/bin/heroku-php-apache2 public/
worker: php artisan queue:restart && php artisan queue:work database --tries=3
Run Code Online (Sandbox Code Playgroud)

查看来自工作人员的消息

heroku logs --ps worker
Run Code Online (Sandbox Code Playgroud)

拖尾来自工人的消息

heroku logs --tail --ps worker
Run Code Online (Sandbox Code Playgroud)

  • 啊,我发现,代码中的“dispatch”调用需要它。 (2认同)