在更改文件后是否重新启动Supervisor进程 Laravel?

我用 Supervisord 监视队列 Laravel 4.2. 这是我的主管配置文件:


[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


我如何在文件中看到 Laravel:

Demons队列的员工在处理之前不会重新启动框架
每项任务。

从我可以说的话,这意味着如果我对其中一个框架文件进行了更改,则不会在处理队列的守护程序中反映此更改。 例如,如果我的一个文件说
echo 1;

, 我改变了它
echo 2;

, 队列用途的框架的版本仍然会说
echo 1

, 虽然我不会重新启动队列。 因此,这些新的变化生效,我需要逃脱:


sudo supervisorctl
supervisor> stop webhooks
supervisor> start webhooks


我是否正确理解它是必要的? 或者是否有另一种方法来应对这一点,以便在不重新启动队列的情况下选择新的文件更改?
已邀请:

八刀丁二

赞同来自:

由于操作守护程序守护程序只加载一次文件,因此必须在检测到任何代码更改之前重新启动它。

一旦项目变得太大即可手动重启每个员工,如何管理多个相关工作队列的一个很好的例子。

或者,您可以使用
http://laravel.com/docs/5.0/qu ... tener
穿过
php artisan queue:listen

. 此选项随着负载大幅增加而增加 CPU 由于每个任务后整个框架从划痕加载。

知食

赞同来自:

我也有这个问题。 出于某种原因运行
$ php artisan queue:listen

或者
$ php artisan queue:work

始终导致队列意外地通过任务中途停留,即使他们没有失败。 我设置了一个主管,但是每次进行更改时,队列都会启动代码库的过时版本的问题。

如果您正在使用 Sublime Text 作为编辑,您可以添加挂钩以重新启动 Supervisor 每次您对项目进行更改 Laravel. 转到项目部分 > 改变项目。


{
"folders":
[
{
"path": "."
},
{
"path": "app/Http/Controllers"
},
{
"path": "resources/views"
},
{
"path": "database/migrations"
}
],
"on_pre_save_language":
[
{
"command": "supervisorctl restart webhooks"
}
]


}

到目前为止一切都很好。 如果出现问题,我会更新我的答案。

石油百科

赞同来自:

你不需要它! 刚执行以下操作,主管将自动重启新的代码。


$> CD /your/project/folder
$> php artisan queue:restart


原因是团队 artisan 将停止转弯,主管将在安装时再次重建它
autorestart=true

在配置中。

要确认这一点,只需按照以下步骤即可查看
uptime

在输出中:


$> sudo supervisorctl status


--

此外,如果您对程序配置进行了更改,您可以执行以下操作 supervisord:


$> sudo supervisorctl update


这将重新启动配置,添加/根据需要删除并重新启动受影响的主管
programs

要回复问题请先登录注册