我正在使用 Supervisord 来监控 Laravel 4.2 中的队列。这是我的 Supervisord 配置文件:
[program:webhooks]
command=php artisan queue:work --daemon --queue=webhooks --tries=3 --sleep=5
directory=/var/www/html/app
stdout_logfile=/var/www/html/app/app/storage/logs/webhooks_supervisord.log
redirect_stderr=true
autostart=true
autorestart=true
Run Code Online (Sandbox Code Playgroud)
正如我在 Laravel 文档中看到的:
守护进程队列工作人员在处理每个作业之前不会重新启动框架。
据我所知,这意味着如果我对框架中的一个文件进行更改,该更改将不会反映在处理队列的守护进程中。例如,如果我的文件之一显示为 ,echo 1;
而我更改为echo 2;
,则队列使用的框架版本仍将显示为echo 1
,直到我重新启动队列。要使这些新更改生效,我需要运行:
sudo supervisorctl
supervisor> stop webhooks
supervisor> start webhooks
Run Code Online (Sandbox Code Playgroud)
我正确的是这是必需的吗?或者是否有另一种方法来处理这个问题,以便在不重新启动队列的情况下获取对文件的新更改?
Rah*_*san 11
你不需要!只需执行以下操作,主管将自动使用新代码重新启动。
$> CD /your/project/folder
$> php artisan queue:restart
Run Code Online (Sandbox Code Playgroud)
原因是 artisan 命令将停止队列,而 supervisor 将按照您autorestart=true
在配置中的设置再次强制重启。
要确认,只需执行以下操作并查看uptime
输出:
$> sudo supervisorctl status
Run Code Online (Sandbox Code Playgroud)
——
如果您对 supervisord 程序的配置进行了更改,还可以执行以下操作:
$> sudo supervisorctl update
Run Code Online (Sandbox Code Playgroud)
这将重新加载配置,根据需要添加/删除,并将重新启动受影响的主管 programs