在很多框架中, 都能在程序中追加配置, 以 laravel 為例, 可以通過以下代碼添加:
config(['app.xxx' => true])
閱讀 webman 配置相關(guān)的源碼之后, 發(fā)現(xiàn)現(xiàn)在 webman 并不能支持, 可否加一個這樣的功能呢?
不清楚什么需求需要動態(tài)更改配置?
動態(tài)追加/修改配置這個不太好做,因為在webman里有些配置生效后再改動是無效的,例如數(shù)據(jù)庫配置、redis配置、server相關(guān)的配置、自定義進程配置等等很多。另外webman多進程的,那么在A進程內(nèi)存中更改了配置,在B進程是不生效的。支持動態(tài)配置后預(yù)期會有很多人反饋bug,所以這個功能暫時不考慮增加。
感謝 walkor 回復(fù). 最近在做一個擴展(A), 實現(xiàn)其中一個功能的時候, 有兩個方案:
其一, 自己實現(xiàn)一套, 比較麻煩.
其二, 使用其他開發(fā)者貢獻的擴展(B).
現(xiàn)在我準(zhǔn)備采用第二種方案的時候遇到一個問題, 就是配置信息應(yīng)該放在那里的問題:
由于目前B擴展的配置信息不是注入的, 而是在構(gòu)造函數(shù)中直接通過 config 函數(shù)獲取的, 所以從 B 擴展這邊也不好下手.
如果目前不考慮支持的話, 我再想想其他辦法. 感謝.
系統(tǒng)級別的配置在應(yīng)用啟動后一般來說都不變的。
尤其是常駐內(nèi)存型的。
像以前FPM的框架,一改文件就能加載隨便改沒問題。
如果是自己的業(yè)務(wù)配置,我就緩存起來,想怎么搞就怎么搞。
老大,也許功能是動態(tài)修改配置,減少對項目程序的文件修改。我在使用 laravel 開發(fā)業(yè)務(wù)級的擴展包時,都是擴展里面自行修改了配置。