[튜닝] DB 쿼리 상황 기록하기. > 그누4 팁자료실

그누4 팁자료실

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

[튜닝] DB 쿼리 상황 기록하기. 정보

[튜닝] DB 쿼리 상황 기록하기.

본문

 

작성: freeimage.kr 081226 김성대
목적: 얼마나 많은 쿼리가 중복 실행되고 있는가 살펴보자..

1. common.php 에
공용변수 난에 추가한다..
기록을 사용하지 않으면 막으면 된다..
set_session("sql_debug_file","$g4[path]/../tmp/".date("ymd").".sql.rec");
이 파일명은 html로 접근이 안되는곳에 위치해야한다.


common.lib.php 을 다음과 같이 수정한다.

//SQL 기록 session 값이 정의가 되면 그 파일에 기록한다.
function sql_history($sql) {
 if ($_SESSION["sql_debug_file"]) {
  $fp=fopen($_SESSION["sql_debug_file"],"a+");
  $a=explode(" ",microtime());
  fputs($fp,date("ymd His",$a[1])."\t$a[0]\t".getenv("REMOTE_ADDR")."\t".$sql."\n");
  fclose($fp);
 }
}


// DB 연결
function sql_connect($host, $user, $pass)
{
    global $g4;

 sql_history("sql_connect $host, $user, $pass, ".$g4[charset]);
    if (strtolower($g4['charset']) == 'utf-8') @mysql_query(" set names utf8 ");
    else if (strtolower($g4['charset']) == 'euc-kr') @mysql_query(" set names euckr ");
    return @mysql_connect($host, $user, $pass);
}


// DB 선택
function sql_select_db($db, $connect)
{
    global $g4;

 sql_history("sql_select_db $host, $user, $pass, ".$g4['charset'] );
    if (strtolower($g4['charset']) == 'utf-8') @mysql_query(" set names utf8 ");
    else if (strtolower($g4['charset']) == 'euc-kr') @mysql_query(" set names euckr ");
    return @mysql_select_db($db, $connect);
}


// mysql_query 와 mysql_error 를 한꺼번에 처리
function sql_query($sql, $error=TRUE)
{
 sql_history("sql_query $sql");
    if ($error)
        $result = @mysql_query($sql) or die("<p>$sql<p>" . mysql_errno() . " : " .  mysql_error() . "<p>error file : $_SERVER[PHP_SELF]");
    else
        $result = @mysql_query($sql);
    return $result;
}


// 쿼리를 실행한 후 결과값에서 한행을 얻는다.
function sql_fetch($sql, $error=TRUE)
{
 sql_history("sql_fetch $sql");
    $result = sql_query($sql, $error);
    //$row = @sql_fetch_array($result) or die("<p>$sql<p>" . mysql_errno() . " : " .  mysql_error() . "<p>error file : $_SERVER[PHP_SELF]");
    $row = sql_fetch_array($result);
    return $row;
}

추천
0

댓글 1개

XML로 파싱을 좀 간단히 하는 방법이 없을까요.가령,최신글이나 메뉴목록을 뽑아 올때요.보통 캐슁처리를 기본으로 하지만,XML파싱이 좀더 세련되고,속도가 빠르다고 알고 있는데요.
전체 33 |RSS
그누4 팁자료실 내용 검색

회원로그인

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