항상 쓰는 config 캐시 활용하기 정보
항상 쓰는 config 캐시 활용하기본문
그누보드는 config테이블의 내용을 항상 접속시마다 데이터베이스에서 불러들입니다. 이것을 예전에 아빠불당님이 좀더 세분화해서 여러 테이블로 나눈 적이 있는데요. 그렇게 하면 데이터베이스를 수정해야 하니까 조금 망설이는 분들을 위해 캐시 파일을 활요하는 방법을 알려드립니다.
원리는 config의 내용을 파일로 저장해서 매번 접속시마다 데이터베이스에서 불러오는 것이 아니라 파일에서 불러오게 합니다: 디비를 접속하지 않기 때문에 약간의 속도 향상이 있습니다.
수정 파일들: common.php, config.php, adm/config_form_update.php
설명은 최신 그누보드 기준으로 설명합니다.
1. common.php
다음을 찾습니다:
$config = sql_fetch(" select * from $g4[config_table] ");
다음으로 교체합니다:
$config_cache_file = $g4['path'].'/data/cache/config.cache.php';
if ($g4['use_config_cache'] && file_exists($config_cache_file))
{
include_once($config_cache_file);
$config = unserialize($config_cache);
unset($config_cache);
}
else
{
$config = sql_fetch(" select * from $g4[config_table] ");
}
2. config.php
파일 중간쯤에 다음을 삽입합니다:
// use config cache
$g4['use_config_cache'] = true;
3. adm/config_form_update.php
다음을 찾습니다:
sql_query($sql);
//sql_query(" OPTIMIZE TABLE `$g4[config_table]` ");
다음의 코드를 아래에 삽입합니다:
if ($g4['use_config_cache'])
{
$config = sql_fetch(" select * from $g4[config_table] ");
if (!is_dir($g4['path'].'/data/cache'))
{
mkdir($g4['path'].'/data/cache') or die('캐시 디렉토리를 생성할 수 없습니다. 퍼미션을 확인해 주세요.');
@chmod($g4['path'].'/data/cache', 0707);
}
if ($fp = fopen($config_cache_file, 'w'))
{
fwrite($fp, "<?\n\$config_cache='".str_replace("'", "\\'", serialize($config))."';\n?>");
fclose($fp);
}
else
{
alert('캐시 생성에 실패했습니다.\ndata/cache 디렉토리가 존재하는지 혹은 쓰기가 가능한 퍼미션인지 확인하여 주세요.');
}
}
추가: 완료한 후에는 반드시 어드민으로 접속해서 환경설정을 한번 저장해 주어야 캐시 파일이 생성됩니다. 그렇지 않으면 효과는 없습니다.
6
댓글 7개


파일을 만들어 넣어주면 되는 건지요.

역시 초보에게는 너무 모든게 어려운거 같아요. 감사합니다.