首页 > 编程语言 >PHP扩展之Yaconf

PHP扩展之Yaconf

时间:2022-09-18 11:44:38浏览次数:110  
标签:get 配置 扩展 yaconf Yaconf PHP children

这个是继鸟哥出品的yaf,yar 之后的又一个好用的工具.  Yaconf配置管理工具

具体可以看鸟哥的文档: https://www.laruence.com/2015/06/12/3051.html

 

 

Yaconf的特点:

  • 它使用单独的一个配置目录(在yaconf.directory指定), 不和代码在一起.
  • 它在PHP启动的时候, 处理所有的要处理的配置, 然后这些配置就会常驻内存, 随着PHP的生命周期存亡. 避免了每次请求的时候解析配置文件.
  • 所有的配置内容都是immutable的, 这就可以借助于Fork的COW, 降低内存占用, 并且在访问配置的时候, 几乎不需要任何的内存Copy, 也不会有无谓的引用计数增减
  • 最重要的, 配置目录和代码分离以后, 可以借助一个配置管理后台, 来实现配置的统一化管理.
  • 它支持(对于非ZTS)配置变更重新加载, 也就是说配置如果有变化(建议更改配置一定使用mv, 不要使用cp), 它会reload, 不需要重启(检测的频率由yaconf.check_delay控制).
  • 它支持丰富的配置类型, 包括字符串, 数组, 分节, 分节继承, 并且还可以在配置中直接写PHP的常量和环境变量等.
  • 最重要的是, 它很简单.

 

场景:  例如在一个服务下部署着很多的PHP项目, 每个项目都重复的配置着Redis的相关配置,  这个时候 需要重置auth密码, 那你是不是需要到每个项目下都需要改一遍呢? 

解决方案:

1.使用Yaconf可以方便的解决这个问题, 可以统一的设置一个全局项目的Redis配置, 这样需要修改的时候 , 只需要修改这个统一的文件就搞定了,YYDS

2.项目接入配置中心,例如Nacos,Apollo等, 然后配置一个项目通用的配置项也是OK的

 

这里介绍下Yaconf

[安装]

cd /usr/local/src
wget https://pecl.php.net/get/yaconf-1.1.2.tgz


tar -zxvf yaconf-1.1.2.tgz
cd yaconf-1.1.2/
phpize
./configure --with-php-config=/usr/local/php7/bin/php-config
make -j 4 
make install

[开启扩展]

vim /usr/local/php7/etc/php.ini


[Yaconf]
extension=yaconf.so  # 声明扩展
yaconf.directory=/data/web-conf  #conf文件路径
yaconf.check_dalay=60  #心跳检测时间,若为0则不检测,但如果有修改,则需重启PHP

 

 

 

[添加配置]

添加配置项
mkdir -p /data/web-conf

vim  /data/web-conf/test.ini
[parent]
parent="base"
children="NULL"
[children : parent]
children="children"

 

[使用]

var_dump(Yaconf::get("test.foo")); // string(3) "bar"
var_dump(Yaconf::get("test.phpversion")); // string(5) "7.4.4"
var_dump(Yaconf::get("test.env")); // string(5) "/root"

 

 

 

 

 

 

 

 

 

参考:

 

标签:get,配置,扩展,yaconf,Yaconf,PHP,children
From: https://www.cnblogs.com/xingxia/p/php_ext_yaconf.html

相关文章

  • 用C++ 编写QML 扩展
    用C++编写QML扩展Qt,QML,QtQuick这是关于用C++来扩展QML的教程。源文:WritingQMLExtensionswithC++QtQML模块提供了一系列API以实现通过C++来扩展QML。可以编写扩......
  • 如何把 iPad 作为 Mac 扩展屏幕使用 All In One
    如何把iPad作为Mac扩展屏幕使用AllInOne将iPad用作Mac的第二个显示屏您可以通过无线方式使用“随航”,但要在使用过程中持续为iPad充电❌不好使呀使用......
  • 【PHP】5版本 过程式操作MySQL
     建立连接和释放连接:#连接参数$sever='localhost:3309';$username='root';$password='root';#调用连接方法,如果失败结束并打印错误信息$connection=my......
  • PHP8.1.10手动安装教程及报错解决梳理
    安装教程参考一:https://www.cnblogs.com/haw2106/p/9839655.html安装教程参考二:https://www.cnblogs.com/jiangfeilong/p/11143698.html 安装php版本8.1.10:https://www......
  • 关于phpstudy小坑
     一个很经典的问题    使用的集成环境的phpstudy, 一直都挺好的 但是每次删除后不能创建同名的数据库  最后发现原来默认的只有一个库 在这个库下面创......
  • PHP-Parser 应用之扫描发现代码中的打印、输出结构语句
    PHP-Parser是由nikic开发的一个PHP抽象语法树(AST)解析器,可方便的将代码与抽象语法树互相转换。工程上常用来生成模板代码(如rector)、生成抽象语法树进行静态分析(......
  • 在PHP中,大括号“{}”的意义与作用
    在PHP中,大括号“{}”可以起到如下作用:将多个独立语句合并为一个复合语句,例如if...else...中经常如此使用在变量间接引用中进行定界,避免歧义。例如${$my_var[8]}......
  • 同样的项目vscode 内存 93M,phpstorm 2个G
         vscodecmd+shift+p 把shellcommand添加code在环境变量中,然后可以用code.打开当前文件安装 Materialicon插件可以显示文件夹的图标......
  • 适合初学者的最佳 VSCode 扩展 2022
    适合初学者的最佳VSCode扩展2022可以说,VisualStudioCode(VSCode)是最流行的开源代码编辑器。它归微软所有,效果惊人。VSCode旨在提供一个高效的环境,为您的日常编......
  • thinkphp6---原生SQL查询
    最近开发项目,由于要考虑大数据的处理,对比了一下,使用Thinkphp执行SQL语句的效率,要比使用模型来做大数据的更新,效率要高很多。总结:复杂的运算,以及对大数据的查询,更新,建议使......