[튜닝] db접속횟수 줄이기 (2011/08/24수정) 정보
[튜닝] db접속횟수 줄이기 (2011/08/24수정)관련링크
첨부파일
본문
접속자가 증가하다 보면 튜닝을 하게되는데.. 튜닝을 하는데 있어 db컨넥을 줄이고자 노력합니다.
기본 설정 (g4_config), 게시판 설정 (g4_board), 그룹 설정 (g4_group) 을 파일로 만들어 컨넥을 줄일수도 있습니다.
동접자는 10분간 현재접속자 기준 최대 1500명, 일일 방문자 3만명 남짓한 사이트에서 테스트 해본결과
서버가 해외에 있어 국내사정보다 못하지만, db접속오류가 현저히 낮아졌으며, 사이트 속도도 나름 쾌적해 졌습니다.
먼저, 첨부파일을 다운받아 /adm/upgrade2.php 경로로 업로드후 실행하신 후 아래 방법대로 소스수정을 해주세요.
기본설정 g4_config
adm/config_form_update.php 121줄 부근
변경전
common.php 294줄 부근
변경전
그룹설정 g4_group
adm/boardgroup_form_update.php 64줄부근
변경전
adm/boardgroup_list_update.php 23줄 부근
변경전
common.php 462줄 부근
변경전
게시판설정 g4_board
adm/board_form_update.php 309줄 부근
변경전
adm/board_list_update.php 39줄 부근
변경전
bbs/write_update.php 618줄 부근
변경전
common.php 452줄 부근
변경전
기본 설정 (g4_config), 게시판 설정 (g4_board), 그룹 설정 (g4_group) 을 파일로 만들어 컨넥을 줄일수도 있습니다.
동접자는 10분간 현재접속자 기준 최대 1500명, 일일 방문자 3만명 남짓한 사이트에서 테스트 해본결과
서버가 해외에 있어 국내사정보다 못하지만, db접속오류가 현저히 낮아졌으며, 사이트 속도도 나름 쾌적해 졌습니다.
먼저, 첨부파일을 다운받아 /adm/upgrade2.php 경로로 업로드후 실행하신 후 아래 방법대로 소스수정을 해주세요.
기본설정 g4_config
adm/config_form_update.php 121줄 부근
변경전
//sql_query(" OPTIMIZE TABLE `$g4[config_table]` ");변경후
goto_url("./config_form.php", false);
//sql_query(" OPTIMIZE TABLE `$g4[config_table]` ");
$file = "$g4[path]/data/config/default.php";
$f = fopen($file, "w");
$row = sql_fetch(" select * from $g4[config_table] ");
fwrite($f, "<?\n");
foreach($row as $key => $value) {
$value = str_replace("\"", "\\\"", $value);
fwrite($f, "\$config['{$key}'] = \"{$value}\";\n");
}
fwrite($f, "?>");
fclose($f);
@chmod($file, 0606);
goto_url("./config_form.php", false);
common.php 294줄 부근
변경전
$config = sql_fetch(" select * from $g4[config_table] ");변경후
include_once("$g4[path]/data/config/default.php");
if(!$config['cf_admin'])
$config = sql_fetch(" select * from $g4[config_table] ");
그룹설정 g4_group
adm/boardgroup_form_update.php 64줄부근
변경전
else변경후
alert("제대로 된 값이 넘어오지 않았습니다.");
goto_url("./boardgroup_form.php?w=u&gr_id=$gr_id&$qstr");
else
alert("제대로 된 값이 넘어오지 않았습니다.");
$file = "$g4[path]/data/config/group_{$_POST[gr_id]}.php";
$f = fopen($file, "w");
$row = sql_fetch(" select * from $g4[group_table] where gr_id = '$_POST[gr_id]' ");
fwrite($f, "<?\n");
foreach($row as $key => $value) {
$value = str_replace("\"", "\\\"", $value);
fwrite($f, "\$group['{$key}'] = \"{$value}\";\n");
}
fwrite($f, "?>");
fclose($f);
@chmod($file, 0606);
goto_url("./boardgroup_form.php?w=u&gr_id=$gr_id&$qstr");
adm/boardgroup_list_update.php 23줄 부근
변경전
sql_query($sql);변경후
}
sql_query($sql);
$file = "$g4[path]/data/config/group_{$_POST[gr_id][$k]}.php";
$f = fopen($file, "w");
$row = sql_fetch(" select * from $g4[group_table] where gr_id = '{$_POST[gr_id][$k]}' ");
fwrite($f, "<?\n");
foreach($row as $key => $value) {
$value = str_replace("\"", "\\\"", $value);
fwrite($f, "\$group['{$key}'] = \"{$value}\";\n");
}
fwrite($f, "?>");
fclose($f);
@chmod($file, 0606);
}
common.php 462줄 부근
변경전
if (isset($gr_id))변경후
$group = sql_fetch(" select * from {$g4['group_table']} where gr_id = '$gr_id' ");
if (isset($gr_id)) {
include_once("$g4[path]/data/config/group_{$gr_id}.php");
if(!$group['gr_id'])
$group = sql_fetch(" select * from {$g4['group_table']} where gr_id = '$gr_id' ");
}
게시판설정 g4_board
adm/board_form_update.php 309줄 부근
변경전
if ($s) {변경후
$sql = " update $g4[board_table]
set bo_table = bo_table
{$s}
where gr_id = '$gr_id' ";
sql_query($sql);
}
if ($s) {
$sql = " update $g4[board_table]
set bo_table = bo_table
{$s}
where gr_id = '$gr_id' ";
sql_query($sql);
$que = sql_query(" select * from $g4[board_table] where gr_id = '$gr_id' ");
for($i=0; $row=sql_fetch_array($que); $i++) {
$file = "$g4[path]/data/config/board_{$row[bo_table]}.php";
$f = fopen($file, "w");
fwrite($f, "<?\n");
foreach($row as $key => $value) {
$value = str_replace("\"", "\\\"", $value);
fwrite($f, "\$board['{$key}'] = \"{$value}\";\n");
}
fwrite($f, "?>");
fclose($f);
@chmod($file, 0606);
}
} else {
$file = "$g4[path]/data/config/board_{$bo_table}.php";
$f = fopen($file, "w");
$row = sql_fetch(" select * from $g4[board_table] where bo_table = '$bo_table' ");
fwrite($f, "<?\n");
foreach($row as $key => $value) {
$value = str_replace("\"", "\\\"", $value);
fwrite($f, "\$board['{$key}'] = \"{$value}\";\n");
}
fwrite($f, "?>");
fclose($f);
@chmod($file, 0606);
}
adm/board_list_update.php 39줄 부근
변경전
sql_query($sql);변경후
}
sql_query($sql);
$file = "$g4[path]/data/config/board_{$_POST['board_table'][$k]}.php";
$f = fopen($file, "w");
$row = sql_fetch(" select * from $g4[board_table] where bo_table = '{$_POST['board_table'][$k]}' ");
fwrite($f, "<?\n");
foreach($row as $key => $value) {
$value = str_replace("\"", "\\\"", $value);
fwrite($f, "\$board['{$key}'] = \"{$value}\";\n");
}
fwrite($f, "?>");
fclose($f);
@chmod($file, 0606);
}
bbs/write_update.php 618줄 부근
변경전
@include_once("$board_skin_path/write_update.tail.skin.php");변경후
if ($g4[https_url])
@include_once("$board_skin_path/write_update.tail.skin.php");
$file = "$g4[path]/data/config/board_{$bo_table}.php";
$f = fopen($file, "w");
$row = sql_fetch(" select * from $g4[board_table] where bo_table = '$bo_table' ");
fwrite($f, "<?\n");
foreach($row as $key => $value) {
$value = str_replace("\"", "\\\"", $value);
fwrite($f, "\$board['{$key}'] = \"{$value}\";\n");
}
fwrite($f, "?>");
fclose($f);
@chmod($file, 0606);
if ($g4[https_url])
common.php 452줄 부근
변경전
$board = sql_fetch(" select * from {$g4['board_table']} where bo_table = '$bo_table' ");변경후
include_once("$g4[path]/data/config/board_{$bo_table}.php");
if(!$board['bo_table'])
$board = sql_fetch(" select * from {$g4['board_table']} where bo_table = '$bo_table' ");
추천
7
7
댓글 23개
감사합니다^^
감사합니다.
적용은 해놨는데 아직 방문자수가 넘치지를 않아서 잘 모르겠네요.
감사합니다.
감사합니다.
감사합니다. 잘 보았습니다. ㅎ
고맙습니다~ 잘 적용은 했습니다....만
관리자화면에서 모든 그룹을 수정으로 들어가 확인해야 하고
모든 게시판마다 다 한번씩 들어가 확인 버튼 한번씩 눌러줘야 하는 군요..흑 ㅠㅠ
새벽에 50개가 넘는 게시판마다 들어갔다 나왔습니다..ㅎ
빨라진 성능을 기대해봅니다..^^
관리자화면에서 모든 그룹을 수정으로 들어가 확인해야 하고
모든 게시판마다 다 한번씩 들어가 확인 버튼 한번씩 눌러줘야 하는 군요..흑 ㅠㅠ
새벽에 50개가 넘는 게시판마다 들어갔다 나왔습니다..ㅎ
빨라진 성능을 기대해봅니다..^^
파일 올려둿습니다. ^^;
테스트결과 모두 정상적으로 작동하는데 게시글에 공지사항 기재시 올라가지 않는 현상이 있네요.
설명 추가했습니다.
하늘색박스 bbs/write_update.php 618줄 부근 수정하시면 되요.
하늘색박스 bbs/write_update.php 618줄 부근 수정하시면 되요.
원군님도 그러신가요? 저도 그러 하네요. 음 ....
설명 추가했습니다.
하늘색박스 bbs/write_update.php 618줄 부근 수정하시면 되요.2
하늘색박스 bbs/write_update.php 618줄 부근 수정하시면 되요.2
하나만 더 확인 부탁 드립니다. 메인 카운터를 노출해 보면 카운터가 정지 상태로 있습니다. 관리자모드의 접속자(합계)랑 메인 카운터의 숫자가 일치하지 않는 현상이 보여 집니다. 감사합니다.
기본 게시판으로 공지 테스트를 해 보았습니다. 마찬가지 입니다.
한번 더 확인 부탁 드립니다.
기본 게시판으로 공지 테스트를 해 보았습니다. 마찬가지 입니다.
한번 더 확인 부탁 드립니다.
$file = "$g4[path]/config/board_{$bo_table}.php";
이 부분 경로가 맞는지 확인해보세요 data 에 config 폴더가 있다면
$file = "$g4[path]/data/config/board_{$bo_table}.php";
이렇게 입력해주시면 정상적으로 공지등록되는걸 확인하였습니다.
이 부분 경로가 맞는지 확인해보세요 data 에 config 폴더가 있다면
$file = "$g4[path]/data/config/board_{$bo_table}.php";
이렇게 입력해주시면 정상적으로 공지등록되는걸 확인하였습니다.
공지 등록이 잘 되네요. 감사합니다.
수정했습니다. 감사합니다. ^^
감사합니다~^^
감사합니다
db접속횟수 줄이기
ㅋㅅ합니다.
감사합니다 ^^
왜.. 에러가 날까요?ㅠㅠ 294줄에서 에러뜨네요 ..
default.php 파일이 없다고....
해결책좀..ㅠ
default.php 파일이 없다고....
해결책좀..ㅠ
db접속횟수 줄이기
board_copy.php 에 연계된 내용
그룹삭제시 구룹파일 삭제 구문
게시판 삭제시 게시판 파일 삭제 구문이 없어서 살짝 아쉽네요
추천
그룹삭제시 구룹파일 삭제 구문
게시판 삭제시 게시판 파일 삭제 구문이 없어서 살짝 아쉽네요
추천
감사합니다. 잘 이용하겠습니다. (__)