有些配置是全局的,每個進(jìn)程都公用的,不會去修改的,現(xiàn)在只能在進(jìn)程啟動事件里去加載一些配置,但是有些配置文件比較大,每個進(jìn)程都去加載一份,蠻占內(nèi)存的,所以想問下,框架有沒有提供主進(jìn)程啟動事件
apcu緩存
// 禁運(yùn)區(qū)域配置
$confCityCheck = ArcCache::get('CONF:INIT:OFFREGION:CHECK:' . $key);
if ($confCityCheck === null) {
$confOffRegionArr = ArcCache::get('CONF:INIT:OFFREGION:DATA');
if ($confOffRegionArr === null) {
$confOffRegionList = [];
$confOffRegionDb = DB::find('config_off_region', array(), array('id' => 1), 1, 1000);
if ($confOffRegionDb) {
foreach ($confOffRegionDb as $v) {
$city = (int)$v['city'];
$confOffRegionList[$city][] = array(
'id' => (int)$v['id'],
'city' => $city, // 城市編號 100
'title' => $v['title'],
'region' => !empty($v['region']) ? explode(',', $v['region']) : [],
);
}
}
$confOffRegionArr = $confOffRegionList;
//將conf存入緩存,以免其他多個進(jìn)程同時從數(shù)據(jù)庫獲取
ArcCache::set('CONF:INIT:OFFREGION:DATA', $confOffRegionArr, 30);
}
ArcCache::set('CONF:INIT:OFFREGION:CHECK:' . $key, 1);
self::$ConfOffRegion = $confOffRegionArr;
}
提供一個思路,感覺可以試下,你的需求是:不要每個進(jìn)程都加載一份配置,太廢內(nèi)存。從入口文件的App::run();
中可以看到static::loadAllConfig(['route', 'container']);
方法加載了所有的配置項(xiàng)目,你可以嘗試重寫這個方法,自定義你要加載的配置文件,或者統(tǒng)一從其他地方加載同一份配置