[튜닝] common.php 에서 config 테이블 자주 읽지 않게 하기

작성: freeimage.kr 김성대 08.12.26
제목: [튜닝] common.php 에서 config 테이블 자주 읽지 않게 하기

원본: config.php 
 $config = sql_fetch(" select * from $g4[config_table] ");

개선:
$filename=$g4['path']."/../tmp/config.save";
if (time()-@filemtime($filename)>600) {
 $config = sql_fetch(" select * from $g4[config_table] ");
 file_put_contents($filename,serialize($config));
}
else {
 $config=unserialize(file_get_contents($filename));
}

원본: adm/config_form_update.php
goto_url("./config_form.php");

개선:
$filename=$g4['path']."/../tmp/config.save";
$config = sql_fetch(" select * from $g4[config_table] ");
file_put_contents($filename,serialize($config));
goto_url("./config_form.php");


설명: 임시파일에 config 내용을 저장한뒤 600초 미만이면 파일에서 읽고,
그 이상이면 테이블에서 읽어서 다시 저장한다.

보안:
  1.config.save를 웹에서 접속가능한 위치에 저장하며 안된다. (웹에서 다운가능)
  2. web 에서 쓰기가 가능해야 하므로 파일권한을  nobody 가 쓰기 가능하도록 해야한다.
  3. 파일명,위치는 공개하지 말라.

참고:
효과에 대해서는 아직 미확인임.. 트래픽을 유발시킨뒤 DB에서 읽는것이 빠른지 파일처리가 빠른지
비교해봐야 할것같음..
|

댓글 3개

mysql db에서 설정을 읽으면 db 테이블에서 가져오는게 아니라
query cache의 값을 가져오게 됩니다.
따라서, 파일을 열어서 가지고 오는 것보다 더 효율적이라고 생각 됩니다.
제 경험으로 traffic이 많은 경우 최근글을 file로 cache하는 것도 비효율 입니다.
DB보단 파일이 빠르다고 알고있는데..
600초 이내에 db내용이 바뀌면 어떻게 되죠?
댓글을 작성하시려면 로그인이 필요합니다.

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요. 나누면 즐거움이 커집니다.

+
제목 글쓴이 날짜 조회
17년 전 조회 2,022
17년 전 조회 4,282
17년 전 조회 2,711
17년 전 조회 3,417
17년 전 조회 2,798
17년 전 조회 4,589
17년 전 조회 2,493
17년 전 조회 2,571
17년 전 조회 2,694
17년 전 조회 3,619
17년 전 조회 2,980
17년 전 조회 3,634
17년 전 조회 3,179
17년 전 조회 2,427
17년 전 조회 6,668
17년 전 조회 3,916
17년 전 조회 2,969
17년 전 조회 3,149
17년 전 조회 1.2만
17년 전 조회 2,872