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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!

그누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 ";
전체 41 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT