Yaconf是鸟哥写的一个高性能的配置管理扩展

为什么要开发这个配置管理扩展?

  • 目前配置文件存在的问题?

    • 用PHP文件做配置的, 一个config目录下可能有很多'.php'不同数据结构的配置文件,而配置文件的解析耗费了很大的性能。
    • 因为数据格式种类比较多(数组、json、yaml),可读性差。
    • 配置和代码在一起,有一定的安全隐患。
    • 如mysql等配置发生改变,开发也要跟随改变。

Yaconf可以解决完美解决上面一系列的问题

今天我们大概的安装使用介绍一下

环境介绍

vagrant@ubuntu-xenial:/var/www/test$ cat /proc/version
Linux version 4.4.0-161-generic (buildd@lcy01-amd64-018) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) ) #189-Ubuntu SMP Tue Aug 27 08:10:16 UTC 2019
vagrant@ubuntu-xenial:/var/www/test$ php -v
PHP 7.1.0 (cli) (built: Feb 26 2021 04:41:12) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies

安装

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=/var/www/zip/config         # 配置文件目录, 这个配置不能通过ini_set指定, 因为必须在PHP启动的时候就确定好.
yaconf.check_delay=60                        # 多久(秒)检测一次文件变动, 如果是0就是不检测, 也就是说如果是0的时候, 文件变更只能通过重启PHP重新加载

创建db.ini文件

foo="bar"
phpversion=PHP_VERSION
env=${HOME}
arr.0=1
arr.1=2
map2.foo.name=yaconf
map2.foo.year=2015

[parent]
parent="base"
children="NULL"
[children : parent]
children="children"
<?php
//获取配置 mixed Yaconf::get(string $name, mixed $default = NULL)
//检查配置是否存在 bool Yaconf::has(string $name)
print_r(\Yaconf::get('db'));
vagrant@ubuntu-xenial:/var/www/test$ php index.php
Array
(
    [foo] => bar
    [phpversion] => 7.1.0
    [env] => /home/vagrant
    [arr] => Array
        (
            [0] => 1
            [1] => 2
        )

    [map2] => Array
        (
            [foo] => Array
                (
                    [name] => yaconf
                    [year] => 2015
                )

        )

    [parent] => Array
        (
            [parent] => base
            [children] => NULL
        )

    [children] => Array
        (
            [parent] => base
            [children] => children
            [a] => 1
        )

)
Last modification:February 26, 2021
如果觉得我的文章对你有用,请随意赞赏