홈>컴퓨터이야기
logo_01.gif


TOTAL ARTICLE : 91, TOTAL PAGE : 1 / 5
구분 웹일반 | 태그-소스 | 제로보드 | 그누보드 |
제로보드 : 최근 게시물보기 속도 빠르게 만들기
 오예    | 2005·06·02 15:19 | HIT : 3,371 | VOTE : 119
최근 게시판 속도 빠르게 하는 방법입니다.


홈페이지에 제로보드 게시판을 이용하여 php 프로그램을 많이 하십니다.
특히 게시물이 많아질 수록 최근 게시물을 로드하는데 시간이 오래 걸림을 많이 느끼시게 될 것입니다.
그 문제를 해결하기 위해 여러가지로 알아 보았더니 원인은 바로 select 문에서 사용하는 order by 에 있었습니다.

예) select * from zetyx_board_free where is_secret=0 and father=0 order by no desc limit 10

order by 에 의해서 게시물이 정렬하는데 걸리는 시간은 n^2 (n 의 제곱) 에 비례합니다.

즉, 게시물이 10 개일 경우 100 에 해당하는 시간이 걸린다면, 게시물이 1000개인 경우 1,000,000 에 해당하는 시간이 걸린다는 것이죠.

실제로 최근 게시물 번호 ( no 필드) 가 4000 번인 게시물의 최근 리스트를 구해오는데 10초넘게 걸린 적도 있었습니다. (한번 구한 다음에는 DB 에 캐시가 저장되어 빠르게 구하지만...)

이런 문제를 해결하기 위해서 가장 최근의 게시물 몇개를 가져와서 그 것에 대해서 order by 를 적용하는 방법으로 속도를 향상 시킬 수 있습니다.

아래의 내용을 적용한 뒤에는 엄청난 효과를 보았습니다. 거의 누르자마자 화면이 뜰 정도의 속도 향상을 가져왔습니다.

제로보드 게시판을 사용하신다면 꼭 적용하셔서 홈페이지 처리속도도 향상시키시고, 서버 부하도 줄여 줍시다.

--------------------------------------------------------------------

outlogin.php 의 print_bbs 함수에 파란 색으로 표시된 부분을 삽입하시면 됩니다.


function print_bbs(...)

...

if($setup[use_alllist]) $target = "zboard.php?id=".$id;
else $target = "view.php?id=".$id;

$result = mysql_query("select * from $t_board"."_$id where is_secret=0 and father=0 order by no desc limit $num", $connect) or die(mysql_error());

----------------------------------------------------------------------

function print_bbs(...)

...

if($setup[use_alllist]) $target = "zboard.php?id=".$id;
else $target = "view.php?id=".$id;

// speed up by hankawi
$tmp = mysql_fetch_array(mysql_query("select max(no) from $t_board"."_$id"));
$max_no = $tmp[0];
if ($max_no > 500) { // 게시물 개수가 500개 이상일때만
$mylimit = $max_no - 100; // 최종 100개를 대상으로
$speedup = "no>$mylimit and";
} else {
$speedup = "";
}

$result = mysql_query("select * from $t_board"."_$id where ".$speedup." is_secret=0 and father=0 order by no desc limit $num", $connect) or die(mysql_error());
//


주의 하실것은 $id where공백".$speedup."공백is_secret=0 공백부분입니다.
샬롬~
난! 자유인...
  
91 제로보드   GD를 이용하여 썸네일을 제로보드 갤러리에 적용시키기 2  오예 04·05·20 3484 254
90 제로보드   여러게시판 최근게시물 통합하여 뽑기 2차 수개 버젼입니다.  오예 04·05·28 5178 390
89 태그-소스   [태그]그림에서 오른쪽 마우스 작동안되게 하는법  오예 04·06·02 2588 266
88 제로보드   [제로보드]제로보드 최신버전에서 플래시 메뉴 사용할때 새로고침 안되는 문제  오예 04·08·30 4028 299
87 제로보드   [제로보드]새로고침 후에도 현재 페이지 계속 보이기  오예 04·08·30 2886 299
86 태그-소스   [태그]embed 태그의 못든 것  오예 04·10·20 3233 201
85 태그-소스   [태그]object 태그(iframe 대신 사용) 2  오예 04·12·31 2175 113
84 태그-소스   [태그]iframe 태그  오예 04·12·31 2344 111
83 제로보드   게시판에 스팸방지하기  오예 05·01·19 2445 160
82 태그-소스   [태그]소스보기 막기 모음  오예 05·05·04 2117 103
81 태그-소스   [태그]소스보기 막기 강좌  오예 05·05·04 2124 106
제로보드   최근 게시물보기 속도 빠르게 만들기  오예 05·06·02 3371 119
79 제로보드   GD게시판의 썸네일을 이용해 겔러리 최근파일 빠르게 보여주기  오예 05·06·08 2010 116
78 제로보드    [팁]게시물 작성시 내용을 복사해주기  오예 05·06·21 2214 128
77 제로보드   갤러리에 한글이름 적용하기  오예 09·06·29 3637 217
76 제로보드   제로보드에 웹에디터 사용하기(미니위니)  오예 05·06·21 3041 166
75 태그-소스   스크롤바 색상바꾸기  오예 05·02·02 2011 138
74 태그-소스   아이프레임 자동 리사이즈  오예 05·08·26 2865 82
73 제로보드   게시판 게시물 밑에 회원사진 출력하기  오예 05·09·13 1892 82
72 제로보드   회원사진 리사이즈  오예 05·09·14 1827 89
12345
Copyright 1999-2020 Zeroboard / skin by GGAMBO