31 05 2020

Yaconf的优势

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

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

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

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

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

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

安装

git clone https://github.com/laruence/yaconf.git

cd yaconf
/usr/bin/phpize7.0   #我是将phpize安装到了该位置 就用你自己安装的位置就行
./configure --with-php-config=/usr/bin/php-config      #后边写你自己php-config所在的位置

make -j && make install


php.ini 添加扩展

extension=yaconf.so
yaconf.directory=/www/html/tp5/ini    #写你自己创建的文件夹路径
yaconf.check_delay=100    #心跳检查时间,若为0则不检查,但如果有修改,需重启PHP


重启php服务

service php7.0-fpm restart
service nginx restart


在tp5中使用

由于默认Yaconf使用多个配置文件,建议在项目中使用setYaconf方法指定Yaconf使用的独立配置文件,例如
建议在应用的公共函数文件中进行设置 common.php

/application/common.php

think\facade\Config::setYaconf('thinkphp');


在需要使用的地方

\Config::yaconf('name') 

或

\Yaconf('name')  // 即可获取配置参数的值