在很多框架中, 都能在程序中追加配置, 以 laravel 为例, 可以通过以下代码添加:
config(['app.xxx' => true])
阅读 webman 配置相关的源码之后, 发现现在 webman 并不能支持, 可否加一个这样的功能呢?
不清楚什么需求需要动态更改配置?
动态追加/修改配置这个不太好做,因为在webman里有些配置生效后再改动是无效的,例如数据库配置、redis配置、server相关的配置、自定义进程配置等等很多。另外webman多进程的,那么在A进程内存中更改了配置,在B进程是不生效的。支持动态配置后预期会有很多人反馈bug,所以这个功能暂时不考虑增加。
感谢 walkor 回复. 最近在做一个扩展(A), 实现其中一个功能的时候, 有两个方案:
其一, 自己实现一套, 比较麻烦.
其二, 使用其他开发者贡献的扩展(B).
现在我准备采用第二种方案的时候遇到一个问题, 就是配置信息应该放在那里的问题:
由于目前B扩展的配置信息不是注入的, 而是在构造函数中直接通过 config 函数获取的, 所以从 B 扩展这边也不好下手.
如果目前不考虑支持的话, 我再想想其他办法. 感谢.
系统级别的配置在应用启动后一般来说都不变的。 尤其是常驻内存型的。 像以前FPM的框架,一改文件就能加载随便改没问题。 如果是自己的业务配置,我就缓存起来,想怎么搞就怎么搞。
说实话,的确没用过呢!~ 不晓得使用场景是怎样的?
有的程序会将配置全部做成功能进行配置, 保存到数据库. 然后加载的时候先从数据库读取, 再追加到配置中
哦哦明白了,不过这种多了一次数据库查询。
老大,也许功能是动态修改配置,减少对项目程序的文件修改。我在使用 laravel 开发业务级的扩展包时,都是扩展里面自行修改了配置。
不清楚什么需求需要动态更改配置?
动态追加/修改配置这个不太好做,因为在webman里有些配置生效后再改动是无效的,例如数据库配置、redis配置、server相关的配置、自定义进程配置等等很多。另外webman多进程的,那么在A进程内存中更改了配置,在B进程是不生效的。支持动态配置后预期会有很多人反馈bug,所以这个功能暂时不考虑增加。
感谢 walkor 回复. 最近在做一个扩展(A), 实现其中一个功能的时候, 有两个方案:
其一, 自己实现一套, 比较麻烦.
其二, 使用其他开发者贡献的扩展(B).
现在我准备采用第二种方案的时候遇到一个问题, 就是配置信息应该放在那里的问题:
由于目前B扩展的配置信息不是注入的, 而是在构造函数中直接通过 config 函数获取的, 所以从 B 扩展这边也不好下手.
如果目前不考虑支持的话, 我再想想其他办法. 感谢.
系统级别的配置在应用启动后一般来说都不变的。
尤其是常驻内存型的。
像以前FPM的框架,一改文件就能加载随便改没问题。
如果是自己的业务配置,我就缓存起来,想怎么搞就怎么搞。
说实话,的确没用过呢!~
不晓得使用场景是怎样的?
有的程序会将配置全部做成功能进行配置, 保存到数据库. 然后加载的时候先从数据库读取, 再追加到配置中
哦哦明白了,不过这种多了一次数据库查询。
老大,也许功能是动态修改配置,减少对项目程序的文件修改。我在使用 laravel 开发业务级的扩展包时,都是扩展里面自行修改了配置。