o

그누보드의 중규모이상 커뮤니티를 위한 커스트마이징(lib/latest.lib.php)

· 2008-02-05 (화) 12:27:01 · 4736

이 문서는 아래 문서부터 차례로 보셔야 합니다.

최신글 호출시 불필요한 파일호출을 막는데 있습니다.
대부분의 경우는 파일테이블에 대한 쿼리실행이 필요 없기때문에 사용여부를 체크하도록 하엿습니다. 또한 최신글에 대하여 전체 테이블이 아닌 최신글 500개 이내에서 쿼리를 날림으로 전체테이블에서 소트하는 db속도 저하부분을 해결하기 위한 방법입니다.
이 로직을 이용하기 위해서는 bbs/write_update.php 파일도 같이 수정하셔야 합니다.
<?
if (!defined('_GNUBOARD_')) exit;
// 최신글 추출
function latest($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="", $file_use=0)
{
    global $g4;

    if ($skin_dir)
        $latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
    else
        $latest_skin_path = "$g4[path]/skin/latest/basic";

    $list = array();

    $sql = " select * from $g4[board_table] where bo_table = '$bo_table'";
    $board = sql_fetch($sql);

    $tmp_write_table = $g4['write_prefix'] . $bo_table; // 게시판 테이블 전체이름

    if($board[bo_last_wr_id]>500) $chk_wr_id = 'wr_id > '.($board[bo_last_wr_id]-100).' and';
    else $chk_wr_id = '';
   
    $sql = " select * from $tmp_write_table where $chk_wr_id wr_is_comment = 0 $options order by wr_id desc 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, $file_use);
   
    ob_start('ob_gzhandler');
    include "$latest_skin_path/latest.skin.php";
    $content = ob_get_contents();
    ob_end_clean();

    return $content;
}
?>

|
댓글을 작성하시려면 로그인이 필요합니다.

그누4 팁자료실

3,309건

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

+
제목 글쓴이 날짜 조회
08-02-14 조회 3,511
08-02-14 조회 8,407
08-02-14 조회 7,900
08-02-13 조회 4,319
08-02-13 조회 8,315
08-02-12 조회 3,656
08-02-09 조회 1만
08-02-09 조회 1.1만
08-02-07 조회 4,145
08-02-06 조회 2,845
08-02-05 조회 4,706
08-02-05 조회 4,518
08-02-05 조회 4,737
08-02-05 조회 3,235
08-02-05 조회 6,838
08-02-05 조회 4,759
08-02-02 조회 3,461
08-02-02 조회 2,969
08-02-01 조회 2,508
08-01-31 조회 2,734