최근글 lib함수 최대한 줄여 보기 > 그누4 팁자료실

그누4 팁자료실

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

최근글 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;
}
?>

추천
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 ";
© SIRSOFT
현재 페이지 제일 처음으로