그누보드 튜닝 (common.php 에서) 약간의 Tips > 그누4 팁자료실

그누4 팁자료실

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

그누보드 튜닝 (common.php 에서) 약간의 Tips 정보

그누보드 튜닝 (common.php 에서) 약간의 Tips

본문

아빠불당님께서 common.php을 튜닝한 것과는 조금 다른 내용입니다. php에 대해서는 많이 모르기 때문에 조언주시면 감사하게 받겠습니다. ^^


출처 : http://stnzone.com/gboard/blog/?id=359


그누보드에 있는 common.php 는 사이트에 접속할 때, 글을 읽을 때마다 호출되는 코드로 최대한 최적화시켜 주는 것이 좋다.

기존코드

if (file_exists("$g4[path]/$dbconfig_file"))
{
    if (is_dir("$g4[path]/install")) die("<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'><script language='JavaScript'> alert('install 디렉토리를 삭제하여야 정상 실행됩니다.'); </script>");
    include_once("$g4[path]/$dbconfig_file");
    $connect_db = sql_connect($mysql_host, $mysql_user, $mysql_password);
    $select_db = sql_select_db($mysql_db, $connect_db);
    if (!$select_db)
        die("<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'><script language='JavaScript'> alert('DB 접속 오류'); </script>");
}
else
{
    echo "<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'>";
    echo <<<HEREDOC
    <script language="JavaScript">
    alert("DB 설정 파일이 존재하지 않습니다.\\n\\n프로그램 설치 후 실행하시기 바랍니다.");
    location.href = "./install/";
    </script>
HEREDOC;
    exit;
}


기존 코드를 다음과 같이 변경한다.

// neojzs : 최적화
include_once("$g4[path]/$dbconfig_file");
$connect_db = sql_connect($mysql_host, $mysql_user, $mysql_password);
$select_db = sql_select_db($mysql_db, $connect_db);
if (!$select_db)
    die("<meta http-equiv='content-type' content='text/html; charset=$g4[charset]'><script language='JavaScript'> alert('DB 접속 오류'); </script>");


즉, 매번 db컨피그화일이 있는지 검사하지 않게 한다. 왜냐하면 그누보드가 인스톨되어 있다면 당연히 있는 것이므로..

또한, 접근가능 IP와 접근차단 IP는 다음과 같이 처리해 주는 것이 좋다.

기존코드 

    // 접근가능 IP
    $cf_possible_ip = trim($config['cf_possible_ip']);
    if ($cf_possible_ip) {
        $is_possible_ip = false;
        $pattern = explode("\n", $cf_possible_ip);
        for ($i=0; $i<count($pattern); $i++) {
            $pattern[$i] = trim($pattern[$i]);
            if (empty($pattern[$i]))
                continue;
            //$pat = "/({$pattern[$i]})/";
            $pattern[$i] = str_replace(".", "\.", $pattern[$i]);
            $pat = "/^{$pattern[$i]}/";
            $is_possible_ip = preg_match($pat, $_SERVER['REMOTE_ADDR']);
            if ($is_possible_ip)
                break;
        }
        if (!$is_possible_ip)
            die ("접근이 가능하지 않습니다.");
    }


 

// neojzs 최적화
    $is_possible_ip = true;
   
    if($config['cf_possible_ip'])
    {

     $cf_possible_ip = trim($config['cf_possible_ip']);
     if ($cf_possible_ip) {
         $is_possible_ip = false;
         $pattern = explode("\n", $cf_possible_ip);
         for ($i=0; $i<count($pattern); $i++) {
             $pattern[$i] = trim($pattern[$i]);
             if (empty($pattern[$i]))
                 continue;
 
             //$pat = "/({$pattern[$i]})/";
             $pattern[$i] = str_replace(".", "\.", $pattern[$i]);
             $pat = "/^{$pattern[$i]}/";
             $is_possible_ip = preg_match($pat, $_SERVER['REMOTE_ADDR']);
             if ($is_possible_ip)
                 break;
         }
         if (!$is_possible_ip)
             die ("접근이 가능하지 않습니다.");
     }
 }

 

기존코드

// 접근차단 IP
    $is_intercept_ip = false;
    $pattern = explode("\n", trim($config['cf_intercept_ip']));
    for ($i=0; $i<count($pattern); $i++) {
        $pattern[$i] = trim($pattern[$i]);
        if (empty($pattern[$i]))
            continue;
        $pattern[$i] = str_replace(".", "\.", $pattern[$i]);
        $pat = "/^{$pattern[$i]}/";
        $is_intercept_ip = preg_match($pat, $_SERVER['REMOTE_ADDR']);
        if ($is_intercept_ip)
          


 

// 접근차단 IP
    $is_intercept_ip = false;
   
    // neojzs 최적화
    if($config['cf_intercept_ip'])
    {
     $pattern = explode("\n", trim($config['cf_intercept_ip']));
     for ($i=0; $i<count($pattern); $i++) {
         $pattern[$i] = trim($pattern[$i]);
         if (empty($pattern[$i]))
             continue;
 
         $pattern[$i] = str_replace(".", "\.", $pattern[$i]);
         $pat = "/^{$pattern[$i]}/";
         $is_intercept_ip = preg_match($pat, $_SERVER['REMOTE_ADDR']);
         if ($is_intercept_ip)
             die ("접근 불가합니다.");
     }
 }


즉, 데이타가 있을 때만 검사하는 형태로 처리하는 것이다.

또한, common.php 파일을 수정할 필요가 없도록 확장하는 코드는 차라리 필요할 때마다 수정하는 것이 부하에 훨씬 좋다.

기존코드

// common.php 파일을 수정할 필요가 없도록 확장합니다.
$tmp = dir("$g4[path]/extend");
while ($entry = $tmp->read()) {
    // php 파일만 include 함
    if (preg_match("/(\.php)$/i", $entry))
        include_once("$g4[path]/extend/$entry");
}


 

// common.php 파일을 수정할 필요가 없도록 확장합니다.
// neojzs 최적화
/*

$tmp = dir("$g4[path]/extend");
while ($entry = $tmp->read()) {
    // php 파일만 include 함
    if (preg_match("/(\.php)$/i", $entry))
        include_once("$g4[path]/extend/$entry");
}
*/
// 필요한 것만 include시켜준다
include_once("$g4[path]/extend/index.php");
include_once("$g4[path]/extend/gblog.extend.php");
include_once("$g4[path]/extend/gnutalk.extend.php");


 

추천
2
  • 복사

댓글 13개

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