사이트 내 전체검색
그누보드
[튜닝] DB 쿼리 상황 기록하기.
최고관리자
https://cmd.kr/gnu/6 URL이 복사되었습니다.

본문

작성: 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;
}

댓글목록

등록된 댓글이 없습니다.

그누보드
190 (4/4P)

Search

Copyright © Cmd 명령어 18.220.79.202