PHP前端开发

Hyperf配置中心Etcd:如何正确获取String类型配置值?

百变鹏仔 3天前 #PHP
文章标签 如何正确

hyperf 配置中心使用 etcd 获取不到 string 值问题

在配置 hyperf 使用 etcd 作为配置中心时,遇到了如下问题:

$ttl = config('hb.app.ttl'); // 1800$mode = config('hb.app.mode'); // null

原因分析

经过代码检查,发现 hyperf configetcd 驱动默认采用 json 打包器对 etcd 中的数据进行打包。因此,在 etcd 中保存的 string 类型数据,在获取时需要以 json 格式进行解析。

解决方案

修改 hyperf 配置中心配置,将数据打包器从 jsonpacker 修改为 phppacker:

'packer' => hyperfutilspackerphppacker::class,

示例:

$ttl = config('hb.app.ttl'); // 1800$mode = config('hb.app.mode'); // "fast"

进一步优化

为了更好地支持不同数据类型,可以考虑在 etcd 中使用类似 type 字段来指示数据类型,并在代码中进行相应处理。