百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
Y

yaconf

> 编程语言
开源

一个 PHP 持久配置容器

1.0K stars0 点赞1 次浏览
访问官网GitHub

工具介绍

一个 PHP 持久配置容器

Yaconf - Yet Another Configuration Container (又一个配置容器) PHP 永久性配置容器

Yaconf 采用了 不可变数据 + 复制写入 的设计,而不是共享内存(shmget/mmap)。解析后的配置存储在标记为 IS_ARRAY_IMMUTABLE 的持久性 zend_array 中 — 所有键都作为永久性字符串进行内部化。由于哈希表是不可变的,从主进程分叉出来的 PHP-FPM 工作进程通过操作系统内核的 COW 机制共享 相同的物理内存页面。只要配置不发生变化,内存就只会被分配一次 — 无论有多少个工作进程在运行。当配置文件被修改且 Yaconf 重新加载它(在非 ZTS 模式下),内核只在写入时复制变更的页面,将新的配置与旧的配置隔离开来。

自 1.2.0 版以来,解析完成后 Yaconf 将整个配置树压缩为一个连续的区块 (两阶段压缩): 它遍历解析的树,收集每个字符串和哈希表,分配一个区块,并将它们拷贝进去 — 通过内容进行字符串去重,并将每个哈希表重新排列为标准的引擎布局。解析阶段中每个节点的分散分配都将被释放。这种做法有两个优点: 更少的单独分配意味着更低的内存开销,而连续的布局则意味着更好的缓存局部性,在工作进程对配置进行 COW 时,所触及的页面也会更少。当配置文件发生变化时, Yaconf 将从头重建并重新压缩;需要扩展的表首先 从持久性堆中分离出来,以便引擎可以在不触及该区块的情况下对它们进行重新调整。

⚠ ZTS(线程安全)构建:Yaconf 会像往常一样在启动时加载配置,但自动重新加载功能不可用(yaconf.check_delay 仅适用于 NTS)。重启 PHP 以获取配置更改。

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Ccconfiguration-managementphpyaconf

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言