<< 2008년 8월 1일 (금) | | 2008년 8월 3일 (일) >>

PHP 최적화 Tips

1. 데이터 출력 부분
 - print보다는 echo가 빠르다.(참고)
 - concatenation시에 double quotes(")보다는 Single quotes (')가 빠르다.(참고)
  예) echo "내이름은 $name";보다는 '내이름은 ' . $name; 를 사용
 - concatenation시에 string concatenation보다는 multiple parameters 방식을 사용하라(참고)
  예) echo '변수의' . '값은' . $variable . '입니다.'; 보다는 echo '변수의', '값은', $variable, '입니다.';를 사용하라

2. Loops와 Counting
 - for loop구문에서 max값은 미리 지정하라(참고)
  예) for ($i = 0; $i < count($array); $i++) 보다는 $max = count($array);for ($i = 0; $i < $max; $i++)방식을 사용하라
 - strlen보다는 isset을 사용하라(참고)
 - 증가 pre-incrementing 방식을 사용하라(참고)
  예) $i++; 보다는 ++$i;

3. Variables과 Functions
 - array를 사용할 경우 free memory를 작업을 처리하기 위해 Unset or null을 사용하라(참고)
 예)
 $fp = fopen("access.log", "r");
 while ($row = fgets($fp, 10000)) :
    $text = $text.$row;
    $i++;
    if ($i > 5000) {
        print_r(getrusage());
        unset($text);
        $text = $row;
        unset($i);
        $i = 0;
        }
    unset($row);
 endwhile;
 - require_once()보다는 require()를 사용하라(참고)
 - includes and require를 사용할 경우 전체 경로를 지정하라(참고)
  예) include('test.php'); 보다는 include('http://www.mimul.com/test.php');
 - "switch/case"문 보다는 "else if" 문을 사용하라(참고)

4. 그 외
 - @는 속도가 느려서 사용하지마라(참고)
 예) $variable = @$variable1; 보다는
     if (isset($variable1))  $variable = $variable1;
     else                $variable = NULL; 사용하라
 - <?..?>, <% ..%>보다는 <?php … ?> tags를 사용하라(참고)
 - mysql_real_escape_string응 사용하라(참고)
 - $_POST, $_SERVER 등의 변수 보다는 mysql_real_escape_string, htmlspecialchars를 사용하라. 사용을 한다면 보안 이슈가 발생한다.
  예) echo htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);와
  $query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password)); 같은 방식을 사용하라
 - 패스워드 사용시에는 평문을 사용하지 말고 해쉬 함수를 사용하라(참고)
 예) $user_password = 'testest';
      if (md5($user_password) == $md5_password_from_database) {
         //login here...
      }
 - ip 정보는 문자열 방식보다는 숫자 방식[ip2long(), long2ip()]으로 저장하라(참고)
 - 자주 변경되지 않는 것들은 캐싱 라이브러리(Smarty, Cache Lite)를 통해 캐싱한다.(참고
 - Database 변수들은 Unset하라. 커넥션 후 필요 없어진다

[참고 사이트]
  • http://progtuts.info/55/php-optimization-tips/
  • http://www.hm2k.com/posts/50-php-optimisation-tips-revisited
태그 :