사이트 내 전체검색
그누보드
검색목록
[튜닝] 그누보드 튜닝 관련 작업 (계속 업데이트)
로빈아빠
https://cmd.kr/gnu/94 URL이 복사되었습니다.

본문

-----------------------------
전체 속도개선: 목록,최근글등에서 첨부파일을 사용하지 않는경우 처리
common.lib.php 의 function get_list() 함수 수정
 //파일첨부가 가능한경우에만 검사 $g4[skip_check_file]일 경우면 검사안함.
 if (!$g4[skip_check_file]&&$board[bo_upload_count]) {
  // 가변 파일
  $list['file'] = get_file($board['bo_table'], $list['wr_id']);

  if ($list['file']['count'])
   $list['icon_file'] = "<img src='$skin_path/img/icon_file.gif' align='absmiddle'>";
 }

------------------------------
검색속도 개선 : 검색어에서 확장 필드등을 검색할때 like %...% 대신 = 를 사용하게 하라..
common.lib.php 의 function get_sql_search() 수정

        $op2 = "";
        for ($k=0; $k<count($field); $k++) { // 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)
            $str .= $op2;
     if (substr($field[$k],0,4)=="inx_") {
   $str .= " ".substr($field[$k],4). "= '$s[$i]' ";
     }
     else {
    switch ($field[$k]) {
     case "mb_id" :
     case "wr_name" :
      $str .= " $field[$k] = '$s[$i]' ";
      break;
     case "wr_hit" :
     case "wr_good" :
     case "wr_nogood" :
      $str .= " $field[$k] >= '$s[$i]' ";
      break;
     // 번호는 해당 검색어에 -1 을 곱함
     case "wr_num" :
      $str .= "$field[$k] = ".((-1)*$s[$i]);
      break;
     // LIKE 보다 INSTR 속도가 빠름
     default :
      if (preg_match("/[a-zA-Z]/", $search_str))
       $str .= "INSTR(LOWER($field[$k]), LOWER('$search_str'))";
      else
       $str .= "INSTR($field[$k], '$search_str')";
      break;
    }
     }
            $op2 = " or ";
        }
        $str .= ")";

검색 사용에서는 ..
list.skin.php 에서 inx_wr_subject 등으로 필드명을 주면된다.
        <select name="sfl">
            <option value="inx_wr_subject">유저아이디</option>
            <option value="wr_subject">아이디검색</option>
            <option value="wr_content">내용</option>
            <option value="wr_subject||wr_content">제목+내용</option>
            <option value="mb_id,1">회원아이디</option>
            <option value="mb_id,0">회원아이디(코)</option>
            <option value="wr_name,1">글쓴이</option>
            <option value="wr_name,0">글쓴이(코)</option>
        </select>

utf-8 환경에서 회원가입시 AJAX 오류를 수정하기 위해
/skin/member/basic/ajax*.php 에서
상단에 chartset을 명시해야 정상동작된다.

include_once("_common.php");
header("Content-type: text/html;charset=$g4[charset]");  // 이줄 추가..2009-11-15 김성대


-----------------------------------
다운로드 시 UTF-8 버젼 공백문자 처리개선
그누보드/bbs/download.php : 60라인에서
$original = urlencode($file[bf_source]); 를 다음으로 변경
$original = str_replace("+","%20", urlencode($file[bf_source]));
언제까지나님: http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=22223&page=&sca=&sfl=&stx=&spt=0&cwin=#c_22264


----------------------------------------------------

js/common.js 에서 width=616 을 찾아 width=620 으로 바꿔주면, 쪽지창, 포인트창, 패스워트찾기창, 스크랩창들의 가로스크롤이 없어집니다
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=21484

-------------

/style.css 에서 img {border:0px none;-ms-interpolation-mode: bicubic;}   IE7 에서 계단현상없어짐
http://www.actrun.com/bbs/board.php?bo_table=tip_gnu&wr_id=90

-------------

/bbs/index.php를 다음과 같이 만들면 .. /bbs/?bd=test 과 같이 사용가능하다.
<?
if (!$_REQUEST[bo_table]&&$_GET[bd]) $_GET[bo_table]=$_GET[bd];
include_once "./board.php";
?>
-------------
/bbs/move_update.php 댓글 이동 패치:http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=18926
$sql2 = " select * from $write_table where wr_num = '$wr_num' order by wr_parent, wr_is_comment, wr_comment desc, wr_id ";

-------------
관리자모드에서 게시판 복사등에서 alert() 창 메시지 깨어질때.
/adm/board_copy_update.php 
에서 javascript:alert() 위에
include_once "$g4[path]/head.sub.php";  넣어준다.

------------------
본문이 길경우 기존의 wr_content 타입이 text 이기때문에 뒷부분은 짤린다.
그래서 타입을 자동으로 늘려준다.
/bbs/write_update.php 의 상단부분에
넣어준다.

//내용이 64K보다 길면 MEDIUMTEXT 타입으로 변경한다.
if (strlen($_POST[wr_content])>64*1024) {
 $result2 = sql_query("SELECT wr_content FROM $write_table limit 1");
 if (mysql_field_type($result2, 0)!="blob"||mysql_field_len($result2,0)<50331645) {
  sql_query("ALTER TABLE $write_table CHANGE wr_content wr_content MEDIUMTEXT");
 }
}



write_update.php 에서.. 업로드파일존재여부는 갱신일때만 확인하면 된다.

// 업로드된 파일 내용에서 가장 큰 번호를 얻어 거꾸로 확인해 가면서
// 파일 정보가 없다면 테이블의 내용을 삭제합니다.
// 등록일때만 확인하면된다.
if ($w=='u') {
 $row = sql_fetch(" select max(bf_no) as max_bf_no from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' ");
 for ($i=(int)$row[max_bf_no]; $i>=0; $i--) 
 {
  $row2 = sql_fetch(" select bf_file from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$i' ");

  // 정보가 있다면 빠집니다.
  if ($row2[bf_file]) break;

  // 그렇지 않다면 정보를 삭제합니다.
  sql_query(" delete from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$i' ");
 }
}

댓글목록

등록된 댓글이 없습니다.

그누보드
24 (1/1P)

Search

Copyright © Cmd 명령어 18.117.172.189