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

그누4 팁자료실

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

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

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

본문

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

최신글 호출시 불필요한 파일호출을 막는데 있습니다.
대부분의 경우는 파일테이블에 대한 쿼리실행이 필요 없기때문에 사용여부를 체크하도록 하엿습니다. 또한 최신글에 대하여 전체 테이블이 아닌 최신글 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;
}
?>

추천
0
  • 복사

댓글 0개

© SIRSOFT
현재 페이지 제일 처음으로