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"
进一步优化