yaconf使用

鸟哥博客原文:Yaconf – 一个高性能的配置管理扩展

什么是yaconf ?

它使用单独的一个配置目录(在yaconf.directory指定), 不和代码在一起.它在PHP启动的时候, 处理所有的要处理的配置, 然后这些配置就会常驻内存, 随着PHP的生命周期存亡. 避免了每次请求的时候解析配置文件.配置目录和代码分离以后, 可以借助一个配置管理后台, 来实现配置的统一化管理.配置如果有变化, 它会reload, 不需要重启(检测的频率由yaconf.check_delay控制).它支持丰富的配置类型, 包括字符串, 数组, 分节, 分节继承, 并且还可以在配置中直接写PHP的常量和环境变量等.

为什么要用 yaconf ?

一般我们项目中是用PHP文件做配置的, 一个config目录下可能有十几个甚至数十个.php配置文件, 里面都是各种各样的array, 这就导致配置文件的解析耗费了很大的性能。

安装

1、Windows

Windows 10 环境配置

phpStudy 集成环境

扩展下载地址:http://pecl.php.net/package/yaconf

选择一个最新版本:http://pecl.php.net/package/yaconf/1.0.7/windows

根据本地环境学则一个版本

yaconf使用_第1张图片

复制 解压后的 php_yaconf.dll 文件到 D:\phpStudy\PHPTutorial\php\php-7.0.12-nts\ext 目录

修改php.ini 配置文件,添加以下扩展

1

extension=php_yaconf.dll  

配置yaconf

1

2

3

[yaconf]

yaconf.directory="D:\phpStudy\Yaconf" // 配置文件的目录位置

yaconf.check_delay=60 //  配置文件的更新时间  

重启所有服务,使用php探针,查看配置是否安装成功

以上表示安装成功了

2、Linux 

1

2

3

4

5

6

7

8

9

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

 

cd yaconf/

phpize

./configure --with-php-config=/usr/local/php-7.2/bin/php-config

 

sudo vim /usr/local/php-7.2/etc/php.ini ## 添加

extension=yaconf.so

sudo systemctl restart php-fpm.service

一、单独使用

在目录 D:\phpStudy\Yaconf 下新增配置文件 redis.ini,内容如下

1

2

3

4

5

6

[base]

parent="yaconf"

children="NULL"

  

[children:base]

children="set"  

 重启服务器,新建 index.php 文件测试

1

2

3

$redis = \Yaconf::get('redis');

print_r($redis);  

 打印内容

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

$ php index.php

Hello WorldArray

(

    [base] => Array

        (

            [parent] => yaconf

            [children] => NULL

        )

 

    [children] => Array

        (

            [parent] => yaconf

            [children] => set

        )

 

)

二、框架集成使用(ThinkPHP5.1)

php.ini 

1

2

3

[yaconf]

yaconf.directory="/home/www/web/cl_new_pay_dev"

yaconf.check_delay=60

5.1 版本默认支付yaconf

在项目更目录新建 thinkphp.ini 添加以下内容( cl_new_pay_dev 目录下)

1

2

3

4

5

6

7

name="yaconf"

year=2015

features[]="fast"

features.1="light"

features.plus="zero-copy"

features.constant=PHP_VERSION

features.env=${HOME}

由于默认Yaconf使用多个配置文件,建议在项目中使用setYaconf方法指定Yaconf使用的独立配置文件,例如

1

2

// 建议在应用的公共函数文件中进行设置 common.php

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

 (1)使用助手函数

1

2

3

4

5

6

var_dump(Config::yaconf('name'));

var_dump(Config::yaconf('year'));

var_dump(Config::yaconf('features')['plus']);

var_dump(Config::yaconf('features.plus'));

var_dump(Config::yaconf('features.constant'));

var_dump(Config::yaconf('features.env'));

 打印结果

1

2

3

4

5

6

string(6) "yaconf"

string(4) "2015"

string(9) "zero-copy"

string(9) "zero-copy"

string(6) "7.2.12"

string(0) ""

(2)不适用助手函数,直接访问

1

2

3

4

5

6

print_r("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

print_r(\Yaconf::get("cpay"));

print_r(\Yaconf::get("cpay.common"));

print_r(\Yaconf::get("cpay.database"));

print_r(\Yaconf::get("cpay.redis"));

print_r(\Yaconf::get("cpay.redis.host"));

 打印结果

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Array

(

    [common] => Array

        (

            [app_name] => 二万OCR

            [app_host] => www.cnblogs.com

            [app_debug] => 1

        )

 

    [database] => Array

        (

            [app_name] => 二万OCR

            [app_host] => www.cnblogs.com

            [app_debug] => 1

            [hostname] => 127.0.0.1

            [database] => cl_cpay

            [username] => root

            [password] => wang123456,

        )

 

    [redis] => Array

        (

            [app_name] => 点点支付

            [app_host] => www.cnblogs.com

            [app_debug] => 1

            [host] => 192.168.1.1

            [port] => 6379

            [auth] => 123456

            [prefix] => TII

        )

 

)

Array

(

    [app_name] => 二万OCR

    [app_host] => www.cnblogs.com

    [app_debug] => 1

)

Array

(

    [app_name] => 二万OCR

    [app_host] => www.cnblogs.com

    [app_debug] => 1

    [hostname] => 127.0.0.1

    [database] => cl_cpay

    [username] => root

    [password] => wang123456,

)

Array

(

    [app_name] => 二万OCR

    [app_host] => www.cnblogs.com

    [app_debug] => 1

    [host] => 192.168.1.1

    [port] => 6379

    [auth] => 123456

    [prefix] => TII

)

192.168.1.1

 capy.ini 配置文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

[common]

app_name = "二万OCR"

app_host = "www.cnblogs.com"

app_debug= true

 

[database:common]

hostname "127.0.0.1"

database = "cl_cpay"

username = "root"

password = "wang123456",

 

[redis:common]

host = "192.168.1.1"

port = 6379

auth = 123456

prefix = "TII"

你可能感兴趣的:(技术分享)