为Yaconf的添加测试场景(练习用)
admin
2023-06-13 08:23:51
0

读了一遍yaconf的源码,发现大部分可以理解。在这个项目上结合现实中使用的两个场景进行进行一些小改动是个比较有趣的事情。

代码地址:https://github.com/netbird/yaconf


业务场景一

在自己的测试环境,各个业务方要求某个业务的api必须长期指向他们的测试环境供他们测试。之前做法有修改host(碰到非80端口失灵),修改代码,修改配置文件。而这套环境又有新的开发任务,需要随时更新代码和配置文件,不更新会导致其他业务失败,所以不能加锁。经常造成代码和配置覆盖。不得不重新修改配置文件和代码满足之前的测试环境。。。


因代码配置文件基于yaconf的。所以修改了下yaconf的源码,提供了一种小方案。


在不修改配置文件和主项目代码的情况下。

增加测试模式和测试配置文件目录。

yaconf设置成测试模式下,在directory_test添加自己需要满足测试需要的配置文件(可以是局部内容)。

在读取配置的时候 就优先读取测试内容,然后在读取通用配置。


例如

配置文件:

    a.ini的内容

a="b"

b="c"

此时读取Yaconf::get(‘a.a’) 得到的是b

设置测试模式,里面测试配置:

    a.ini

        a="d"

此时读取Yaconf::get('a.a') 得到的是d

当然,整体读取Yaconf::get('a'),会导致读取不到a.b的内容,具体依据自己使用的场景。

PS:仅在测试环境下当作练习使用,不适用所有场景。


业务场景二

如何在CLI模式下使用Yaconf

虽然Yaconf更适合web请求场景,不太适合在CLI模式下使用,但是受限与环境, 历史(业务难分离)等问题,又急切想使用Yaconf怎么办?


Yaconf的原理是在PHP_MINIT_FUNCTION函数里面初始化配置,然后在PHP_RINIT_FUNCTION函数里面根据条件更新配置。这样当一个web请求时,会触发PHP_RINIT_FUNCTION这个函数,从而自动根据条件更新配置。


CLI模式模式下,如果进程不退出,那么只在启动的时候执行一次PHP_MINIT_FUNCTIONPHP_RINIT_FUNCTION,此时无法更新配置信息。


解决方案:

增加外部触发函数,手动执行更新。即:增加Yaconf::update()方法,在代码中,适合的位置去执行这个函数,触发更新。

当然,更新的原则和原理还是跟PHP_RINIT_FUNCTION一样。

如配置文件:

    a.ini

        a="b"


代码:

while(true) {

      Yaconf::update();

      var_dump(Yaconf::get('a.a'));

}


此时,如果将配置文件改成:

     a="c"


则上述程序会在check_delay(通常5分钟)后,输出c(不用退出进程,即可更新).


目前,还没有投入正式环境。如果大家有这个使用场景,可以考虑以上方式。


ps: 1. 限于本人能力,仅仅包了个接口,没有对内部进行合并逻辑处理,重在解决问题。

 

     2. 条条大道通罗马,如果可能,大家也可以使用别的更好的方式。解决问题的方法不唯一。


     因能力有限,内部解析代码没有做改动。


相关内容

热门资讯

王毅会见巴军方高层,谈及伊朗局... 据凤凰卫视报道,中共中央政治局委员、外交部长王毅5月25日在人民大会堂会见巴基斯坦国防军司令兼陆军参...
何妨把课堂打造成学术“直播间” 评论员说 何妨把课堂打造成学术“直播间” ■ 本报评论员 刘晓庆 其实,不只是大学课堂越来越“静悄悄...
空间站完成第8次“太空会师” 5月25日在北京航天飞行控制中心飞控大厅拍摄的神舟二十一号航天员乘组和神舟二十三号航天员乘组拍摄“全...
美军称在伊朗南部实施自卫打击 央视记者获悉,美国中央司令部发言人蒂姆·霍金斯上尉表示,美军25日在伊朗南部实施了自卫打击,“旨在保...
小米押注!闪回科技四次递表港交... 【大河财立方消息】5月25日,闪回科技有限公司(以下简称闪回科技)在港交所提交上市申请,独家保荐人为...
神舟二十三号飞船发射任务圆满成... 乘组一名航天员将开展一年期在轨驻留试验 神舟二十三号飞船发射任务圆满成功 北京时间5月24日23时0...
西安警方:女孩与父亲争执被路人... 5月25日凌晨,针对网传“16岁女孩被陌生男子殴打”一事,西安市公安局莲湖分局发布警情通报。据江西广...
力鼎光电获得外观设计专利授权:... 证券之星消息,根据天眼查APP数据显示力鼎光电(605118)新获得一项外观设计专利授权,专利名为“...
“一箭8星”再启新程!中科宇航... IT之家 5 月 25 日消息,中科宇航今日宣布,近日,力箭一号遥十四运载火箭在中科宇航产业化基地如...
鄠图科普丨一起“趣”阅读|火箭... 火箭发射是太空旅行的开始, 也是人类探索宇宙的重要一步。 火箭是载人和无人航天器进入太空的必备工具,...