moduleModel 및 moduleController에서 제공하던 각 모듈별 설정을 이용시 너무 많은 설정값들이 생길 경우 이를 serialize/ unserialize하는데 드는 부하가 커짐을 방지하기 위해서 module_config외에 module_part_config 테이블을 주고 module_srl 별 설정을 분산하도록 하여 쓸데없는 부하가 생기지 않도록 수정.

files/cache/module_info내에 있던 module_config 캐시 파일도 사용하지 않도록 변경


git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4696 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2008-10-27 07:27:47 +00:00
parent cc7dd67ed2
commit 5934906056
41 changed files with 372 additions and 445 deletions

View file

@ -575,31 +575,48 @@
}
/**
* @brief 특정 모듈의 설정 정보 return
* 캐시된 설정 정보가 없으면 만들 캐시하고 return
* @brief 특정 모듈의 설정 return
* board, member등 특정 모듈의 global config 관리용
**/
function getModuleConfig($module) {
if(!$GLOBALS['__ModuleConfig__'][$module]) {
$cache_file = sprintf('./files/cache/module_info/%s.config.php',$module);
if(!file_exists($cache_file)) {
$args->module = $module;
$output = executeQuery('module.getModuleConfig', $args);
$config = base64_encode($output->data->config);
$buff = sprintf('<?php if(!defined("__ZBXE__")) exit(); $config = "%s"; ?>', $config);
FileHandler::writeFile($cache_file, $buff);
}
if(!$config && file_exists($cache_file)) @include($cache_file);
$GLOBALS['__ModuleConfig__'][$module] = unserialize(base64_decode($config));
$args->module = $module;
$output = executeQuery('module.getModuleConfig', $args);
$config = unserialize($output->data->config);
$GLOBALS['__ModuleConfig__'][$module] = $config;
}
return $GLOBALS['__ModuleConfig__'][$module];
}
/**
* @brief 특정 mid의 모듈 설정 정보 return
* mid의 모듈 의존적인 설정을 관리
**/
function getModulePartConfig($module, $module_srl) {
if(!$GLOBALS['__ModulePartConfig__'][$module][$module_srl]) {
$args->module = $module;
$args->module_srl = $module_srl;
$output = executeQuery('module.getModulePartConfig', $args);
$config = unserialize($output->data->config);
$GLOBALS['__ModulePartConfig__'][$module][$module_srl] = $config;
}
return $GLOBALS['__ModulePartConfig__'][$module][$module_srl];
}
/**
* @brief mid별 모듈 설정 정보 전체를 구함
**/
function getModulePartConfigs($module) {
$args->module = $module;
$output = executeQueryArray('module.getModulePartConfigs', $args);
if(!$output->toBool() || !$output->data) return array();
foreach($output->data as $key => $val) {
$result[$val->module_srl] = unserialize($val->config);
}
return $result;
}
/**
* @brief 모듈의 conf/info.xml 읽어서 정보를 구함