网站logo
×

首页 > 最新资讯 > 使用Yaconf来管理配置

使用Yaconf来管理配置

发布时间 2020-04-29

背景

php大多数时候是用文件的形式来存储配置,在代码项目中建立一个config目录存储.php文件,无论是以数组还是json的格式存储,其实每次在获取配置文件的内容时都得进行文件操作,这个过程是比较费时的,且在多人开发也不方便。

介绍

现介绍一款php的高性能的配置管理扩展Yaconf。Yaconf是一个高性能的PHP配置容器, 它在PHP启动的时候把格式为INI的配置文件Parse后存储在PHP的常驻内存中,不需要每次请求的时候都来分析配置文件,并且在获取配置项的时候"zero-copy"。

Yaconf有以下几点优势:

1.它使用单独的一个配置目录(在yaconf.directory指定), 不和代码在一起.

2.它在PHP启动的时候, 处理所有的要处理的配置, 然后这些配置就会常驻内存, 随着PHP的生命周期存亡. 避免了每次请求的时候解析配置文件.

3.所有的配置内容都是immutable的, 这就可以借助于Fork的COW, 降低内存占用, 并且在访问配置的时候, 几乎不需要任何的内存Copy, 也不会有无谓的引用计数增减

4.最重要的, 配置目录和代码分离以后, 可以借助一个配置管理后台, 来实现配置的统一化管理.

5.它支持(对于非ZTS)配置变更重新加载, 也就是说配置如果有变化(建议更改配置一定使用mv, 不要使用cp), 它会reload, 不需要重启(检测的频率由yaconf.check_delay控制).

6.它支持丰富的配置类型, 包括字符串, 数组, 分节, 分节继承, 并且还可以在配置中直接写PHP的常量和环境变量等.

7.最新的1.1版本发布后更是有40%速度提升

8.最重要的是, 它很简单.

当然他也有一些缺点:

1.不支持多级目录。

2.不可能把各种配置参数全部写在一个文件里,这样一个文件会越来越大。

3.即便把配置分门别类,多个项目无法共用同一个目录,只能用前缀的形式解决。

4.配置数组的下标的key本身就带了很多点号;导致被解析成若干个key

安装

 

使用

Yaconf 只提供了两个方法:

 

比如在/tmp/yaconf文件夹内有两个文件

foo.ini

 

bar.ini

 

运行