블로그 이미지
Don't Stop
angelyr

Recent Post

Recent Comment

Archive

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
  • total
  • today
  • yesterday

'작살'에 해당되는 글 1건

  1. 2008.10.11 [PHP] php 최적화 방법

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을 사용하라(참고) 
예)

  1. $fp = fopen("access.log", "r");
  2. while ($row = fgets($fp, 10000)) :
  3.     $text = $text.$row;
  4.     $i++;
  5.     if ($i > 5000) {
  6.         print_r(getrusage());
  7.         unset($text);
  8.         $text = $row;
  9.         unset($i);
  10.         $i = 0;
  11.     }
  12.     unset($row);
  13. 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; 사용하라
- , <% ..%>보다는 tags를 사용하라(참고) 
- mysql_real_escape_string응 사용하라(참고) 
- $_POST, $_SERVER 등의 변수 보다는 mysql_real_escape_string, htmlspecialchars를 사용하라. 사용을 한다면 보안 이슈가 발생한다. 


예) echo htmlspecialchars("Test", 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하라. 커넥션 후 필요 없어진다 

 

posted by angelyr