我司产品这边线上已经使用webman开发产品,稳定性能表现非常优越,先实名表扬一下。
现在运维K8S部署要求webman需要做配置热重载,每次从配置中心修改.env配置以后,webman需要自动加载最新的配置。
请问一下webman是否能够实现对.env的监听重载?感激不尽!
我现在想到一个解决方案就是: 开一个http服务接口,然后在接口代码里面执行
exec('php start.php reload');
不知道这样是否可行?会不会出现问题?目前测试是可以reload服务
运行 posix_kill(posix_getppid(), SIGUSR1); ,意思是给当前进程的父进程发送SIGUSR1信号让其执行reload
@1:测试了一下,修改.env里面的数据库名,好像并未生效。我随便配置了一个不存在的库,但是接口还是以前的正确数据。忘了说一下情况就是webman在容器里是debug模式运行的,并未常驻内存运行。因为运维要求进程要卡主,否则容器会自动认为这个服务已经挂了!不知道这个有影响不
如果执行 posix_kill(posix_getppid(), SIGUSR1);的进程与webman不是共同的主进程,则没有效果。 测试下在终端执行 php start.php reload 是否可以加载 新的.env
@1:目前是在一个主进程下,但是执行后并未生效最新的.env配置。有点头疼
更新下 webman/start.php webman/config/process.php webman/process/FileMonitor.php
webman/start.php
webman/config/process.php
webman/process/FileMonitor.php
github地址 https://github.com/walkor/webman
增加了.env监控自动加载。
好的 我先试试
可以了,十分感谢walkor大大
不客气
我现在想到一个解决方案就是:
开一个http服务接口,然后在接口代码里面执行
不知道这样是否可行?会不会出现问题?目前测试是可以reload服务
运行 posix_kill(posix_getppid(), SIGUSR1); ,意思是给当前进程的父进程发送SIGUSR1信号让其执行reload
@1:测试了一下,修改.env里面的数据库名,好像并未生效。我随便配置了一个不存在的库,但是接口还是以前的正确数据。忘了说一下情况就是webman在容器里是debug模式运行的,并未常驻内存运行。因为运维要求进程要卡主,否则容器会自动认为这个服务已经挂了!不知道这个有影响不
如果执行 posix_kill(posix_getppid(), SIGUSR1);的进程与webman不是共同的主进程,则没有效果。
测试下在终端执行 php start.php reload 是否可以加载 新的.env
@1:目前是在一个主进程下,但是执行后并未生效最新的.env配置。有点头疼
更新下
webman/start.php
webman/config/process.php
webman/process/FileMonitor.php
github地址 https://github.com/walkor/webman
增加了.env监控自动加载。
好的 我先试试
可以了,十分感谢walkor大大
不客气