최근글 lib함수 최대한 줄여 보기 정보
최근글 lib함수 최대한 줄여 보기본문
<?
if (!defined('_GNUBOARD_')) exit;
//배열 생성
$g4_board = array();
//latest
function latest($skin_dir="", $bo_table, $rows=10, $subject_len="", $options="")
{
global $g4;
global $g4_board;
if ($skin_dir)
$latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
else
$latest_skin_path = "$g4[path]/skin/latest/basic";
$list = array();
if(!$g4_board or !$g4_board["$bo_table"]){
//$sql = " select * from $g4[board_table] where bo_table = '$bo_table'";
$sql_select = "bo_table, bo_subject, bo_notice, bo_category_list, bo_new, bo_hot";
$sql = " select $sql_select from $g4[board_table] where bo_table = '$bo_table'";
$g4_board["$bo_table"] = sql_fetch($sql);
}
$board = $g4_board["$bo_table"];
$tmp_write_table = $g4['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
//$sql = " select * from $tmp_write_table where wr_is_comment = 0 order by wr_id desc limit 0, $rows ";
// 위의 코드 보다 속도가 빠름
$sql_select = "wr_id, wr_subject, wr_option, wr_content, wr_comment, wr_parent, wr_datetime, wr_name, wr_reply, ca_name";
$sql = " select $sql_select from $tmp_write_table where wr_is_comment = 0 order by wr_num asc, wr_reply limit 0, $rows ";
//explain($sql);
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++)
$list[$i] = get_list($row, $board, $latest_skin_path, $subject_len);
ob_start();
include "$latest_skin_path/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();
return $content;
}
?>
if (!defined('_GNUBOARD_')) exit;
//배열 생성
$g4_board = array();
//latest
function latest($skin_dir="", $bo_table, $rows=10, $subject_len="", $options="")
{
global $g4;
global $g4_board;
if ($skin_dir)
$latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
else
$latest_skin_path = "$g4[path]/skin/latest/basic";
$list = array();
if(!$g4_board or !$g4_board["$bo_table"]){
//$sql = " select * from $g4[board_table] where bo_table = '$bo_table'";
$sql_select = "bo_table, bo_subject, bo_notice, bo_category_list, bo_new, bo_hot";
$sql = " select $sql_select from $g4[board_table] where bo_table = '$bo_table'";
$g4_board["$bo_table"] = sql_fetch($sql);
}
$board = $g4_board["$bo_table"];
$tmp_write_table = $g4['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
//$sql = " select * from $tmp_write_table where wr_is_comment = 0 order by wr_id desc limit 0, $rows ";
// 위의 코드 보다 속도가 빠름
$sql_select = "wr_id, wr_subject, wr_option, wr_content, wr_comment, wr_parent, wr_datetime, wr_name, wr_reply, ca_name";
$sql = " select $sql_select from $tmp_write_table where wr_is_comment = 0 order by wr_num asc, wr_reply limit 0, $rows ";
//explain($sql);
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++)
$list[$i] = get_list($row, $board, $latest_skin_path, $subject_len);
ob_start();
include "$latest_skin_path/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();
return $content;
}
?>
추천
4
4
댓글 4개
추천 꾹!! ㅋ
동적 sql 만들때 USE INDEX ( wr_num_reply_parent ) 로 인덱스를 걸어주는것 속도 테스트좀
해주실분 있나요?
보통 테이블이 작은것은 인덱스 없이 full scan 하는것이 로딩속도가 빨라 속도가 좋을 수 있습니다.
그리고 인덱스를 타더라도 wr_num 순으로 처리되어야 속도가 빨라집니다.
그러니까 작은테이블은 인덱스 없이 사용하는것이 좋고, 큰 테이블이라면 인덱스를 사용하더라도
wr_num_reply_parent 이 더 좋습니다.
기본상테는 wr_is_comment 로 되어 있습니다. 이것은 원글을 골라내는 where 부분인데
원글과 댓글의 비율이 1:9 정도 일때 효율이 좋습니다. 그러나 대부분의 테이블이
원글과 댓글이 1:4 정도일거라 생각됩니다.
혹시 게시판글이 많은(10000건이상) 홈피운영하신다면 아래 sql로 테스트좀 부탁합니다(latest.lib.php)
$sql = " select wr_id, wr_subject, wr_option, wr_content, wr_comment, wr_parent, wr_datetime, wr_last, wr_homepage, wr_name, wr_reply, wr_link1, wr_link2, ca_name, wr_hit from $tmp_write_table USE INDEX ( wr_num_reply_parent ) where wr_is_comment = 0 order by wr_num limit 0, $rows ";
해주실분 있나요?
보통 테이블이 작은것은 인덱스 없이 full scan 하는것이 로딩속도가 빨라 속도가 좋을 수 있습니다.
그리고 인덱스를 타더라도 wr_num 순으로 처리되어야 속도가 빨라집니다.
그러니까 작은테이블은 인덱스 없이 사용하는것이 좋고, 큰 테이블이라면 인덱스를 사용하더라도
wr_num_reply_parent 이 더 좋습니다.
기본상테는 wr_is_comment 로 되어 있습니다. 이것은 원글을 골라내는 where 부분인데
원글과 댓글의 비율이 1:9 정도 일때 효율이 좋습니다. 그러나 대부분의 테이블이
원글과 댓글이 1:4 정도일거라 생각됩니다.
혹시 게시판글이 많은(10000건이상) 홈피운영하신다면 아래 sql로 테스트좀 부탁합니다(latest.lib.php)
$sql = " select wr_id, wr_subject, wr_option, wr_content, wr_comment, wr_parent, wr_datetime, wr_last, wr_homepage, wr_name, wr_reply, wr_link1, wr_link2, ca_name, wr_hit from $tmp_write_table USE INDEX ( wr_num_reply_parent ) where wr_is_comment = 0 order by wr_num limit 0, $rows ";
좋긴 좋네요...
이것도 좋은방법이긴 한데, get_list 함수도 수정해야 더욱 큰 효과를 보실수 있습니다.