这个是继鸟哥出品的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"

参考:

PHP扩展之Yaconf的更多相关文章

  1. PHP7 学习笔记(十六)Yaconf 一个高性能的配置管理扩展

    鸟哥博客原文:Yaconf – 一个高性能的配置管理扩展 什么是yaconf ? 它使用单独的一个配置目录(在yaconf.directory指定), 不和代码在一起.它在PHP启动的时候, 处理所有 ...

  2. Yaconf – 一个高性能的配置管理扩展

    鸟哥出品:http://www.laruence.com/2015/06/12/3051.html 首先说说, 这个是干啥的. 我见过很多的项目中, 用PHP文件做配置的, 一个config目录下可能 ...

  3. PHP持久配置容器Yaconf

    PHP持久配置容器Yaconf的安装及使用 Yaconf介绍:Yaconf是一个配置容器,它解析ini文件,在PHP启动时将结果存储在PHP中,配置存在于整个PHP生命周期中,这使得它非常快. 要求: ...

  4. Yaconf-配置管理扩展

    1.下载yaconf安装包git clone https://github.com/laruence/yaconf.git2.目录切换至yaconf,编译生成so 文件(找到你的phpize位置) / ...

  5. Asp.net Boilerplate之AbpSession扩展

    当前Abp版本1.2,项目类型为MVC5. 以属性的形式扩展AbpSession,并在"记住我"后,下次自动登录也能获取到扩展属性的值,版权归"角落的白板报"所 ...

  6. 恢复SQL Server被误删除的数据(再扩展)

    恢复SQL Server被误删除的数据(再扩展) 大家对本人之前的文章<恢复SQL Server被误删除的数据> 反应非常热烈,但是文章里的存储过程不能实现对备份出来的日志备份里所删数据的 ...

  7. .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法

    .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法 0x00 为什么需要Map(MapWhen)扩展 如果业务逻辑比较简单的话,一条主管道就够了,确实用不到 ...

  8. .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类

    .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...

  9. 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)

    前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...

  10. Dapper扩展之~~~Dapper.Contrib

    平台之大势何人能挡? 带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4822808.html#skill 上一篇文章:Dapper逆天入门~强类型,动态类型 ...

随机推荐

  1. sql server 将数据库表里面的数据,转为insert语句,方便小批量转移数据

    create proc [dbo].[proc_insert] (@tablename varchar(256)) as begin set nocount on declare @sqlstr va ...

  2. POJ-2229 Sumsets(基础dp)

    Farmer John commanded his cows to search for different sets of numbers that sum to a given number. T ...

  3. Cookie——基本使用

    Cookie 基本使用      Cookie 原理 Cookie 使用细节 Cookie jsp中获取Cookie

  4. [Tkey] Transport Nekomusume II

    CL-20 考虑定义一条有向边 \(u\rightarrow v\) 的意义为 \(u\) 把窝让给了 \(v\),那么每个点一定入度为 \(1\),所有的边会形成一个外向基环树森林. 贪心地把猫娘按 ...

  5. 将Sublime Text添加到鼠标右键

     事件起因: 在众多 文本文档软件中,个人用过比较多,notepad++ / Edit / EditPlus / notepad--  / Sublime Text 等等,但是比较偏爱的还是 Subl ...

  6. 安装windows11系统跳过微软账号登录,使用本地账号登录方法

    在安装win11系统,进行到如图下所示界面的时候,暂停下 我们可以按下键盘的Shift+F10按键(部分电脑是Fn+Shift+F10),这时屏幕会出现命令行窗口,如图下所示 我们需要在命令行内输入代 ...

  7. eBPF 概述:第 2 部分:机器和字节码

    1. 前言 我们在第 1 篇文章中介绍了 eBPF 虚拟机,包括其有意的设计限制以及如何从用户空间进程中进行交互.如果你还没有读过这篇文章,建议你在继续之前读一下,因为没有适当的介绍,直接开始接触机器 ...

  8. 安装并运行tomcat8

    ps:tomcat7对应 jdk 1.7 tomcat8对应 jdk 1.8 注意要对应自己的项目选择下载tomcat版本 1. 软件商城搜索安装 tokcat 找到自己的tomcat的端口 8023 ...

  9. vue2基于 vue-cropper插件对图片裁剪

    <template> <div id="app"> <div class="model" v-show="model&q ...

  10. Maven的安装部署(不踩雷版)

    在idea中配置maven需注意maven版本和idea版本相匹配.本人使用idea版本为2020.3,jdk1.8,maven3.6.3可以与之相匹配. 一.下载maven maven下载官网地址: ...