Laravel 5.7:Supervisorctl不会使用以下命令自动重新启动队列工作器

时间:2019-05-22 15:25:38

标签: laravel laravel-5 queue daemon supervisor

我有laravel documentation中建议的主管来管理队列通知。我已经按照文档配置了主管,这是我的配置文件。

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/application/artisan queue:work --tries=3
autostart=true
autorestart=true
user=root
numprocs=8
redirect_stderr=true
stdout_logfile=/var/www/application/storage/logs/worker/worker.log

这可以很好地工作,但是问题是一段时间后所有工作人员都停止了,即使有待完成的作业要完成也没有重新启动。

我需要使用sudo supervisorctl start laravel-worker:*手动重新启动主管。

如何解决?

Supervisorctl does not auto-restart daemon queue worker when hanging这是类似的问题,但给出的解决方案与我在此处使用的是同一件事。

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您可以使用地平线。地平线为您处理所有这一切。 https://laravel.com/docs/5.8/horizon

用于地平线的主管脚本示例:

[program:horizon]
process_name=%(program_name)s
command=php /var/www/application/artisan horizon
autostart=true
autorestart=true
user=root
redirect_stderr=true
stdout_logfile=/var/www/application/storage/logs/horizon.log

也将此命令添加到您的部署过程中:

php artisan horizon:terminate

无需重新启动它,主管会为您完成。