[튜닝] 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,006
17년 전 조회 4,253
17년 전 조회 2,690
17년 전 조회 3,400
17년 전 조회 2,781
17년 전 조회 4,568
17년 전 조회 2,481
17년 전 조회 2,561
17년 전 조회 2,673
17년 전 조회 3,604
17년 전 조회 2,963
17년 전 조회 3,615
17년 전 조회 3,169
17년 전 조회 2,415
17년 전 조회 6,650
17년 전 조회 3,900
17년 전 조회 2,956
17년 전 조회 3,132
17년 전 조회 1.2만
17년 전 조회 2,860
🐛 버그신고