[튜닝] 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;
}

|

댓글 1개

XML로 파싱을 좀 간단히 하는 방법이 없을까요.가령,최신글이나 메뉴목록을 뽑아 올때요.보통 캐슁처리를 기본으로 하지만,XML파싱이 좀더 세련되고,속도가 빠르다고 알고 있는데요.
댓글을 작성하시려면 로그인이 필요합니다. 로그인

그누4 팁자료실

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

+
제목 글쓴이 날짜 조회
17년 전 조회 4,252
17년 전 조회 2,690
17년 전 조회 3,398
17년 전 조회 2,780
17년 전 조회 4,565
17년 전 조회 2,479
17년 전 조회 2,559
17년 전 조회 2,673
17년 전 조회 3,603
17년 전 조회 2,963
17년 전 조회 3,613
17년 전 조회 3,167
17년 전 조회 2,414
17년 전 조회 6,644
17년 전 조회 3,898
17년 전 조회 2,953
17년 전 조회 3,129
17년 전 조회 1.2만
17년 전 조회 2,858
17년 전 조회 5,977
🐛 버그신고