在Laravel 文档中找到了答案(该解决方案适用于任何始终运行的后台进程,而不仅仅是 PHP 和 Laravel)。主管!
配置主管
Supervisor 配置文件通常存储在 /etc/supervisor/conf.d 目录中。在这个目录中,你可以创建任意数量的配置文件来指示主管应该如何监控你的进程。例如,让我们创建一个 laravel-worker.conf 文件来启动和监控一个 queue:work 进程:
启动主管
创建配置文件后,您可以使用以下命令更新 Supervisor 配置并启动进程:
sudo supervisorctl 重读
sudo supervisorctl 更新
sudo supervisorctl start laravel-worker:*
它甚至可以帮助我使用单个配置文件和单个命令启动尽可能多的进程。同样,来自 Laravel 文档:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/forge/app.com/artisan queue:work sqs --sleep=3 --tries=3
autostart=true
autorestart=true
user=forge
numprocs=8
redirect_stderr=true
stdout_logfile=/home/forge/app.com/worker.log
通过调用sudo supervisorctl start laravel-worker:*
,将运行 8 个后台进程,如果出现错误也会重新启动。
如果我只是想用新发布的版本重新启动,我restart
直接调用命令:
supervisorctl restart laravel-worker:*
我将把它作为 Deployer 任务集成到我的 CI/CD 管道中。