[phpfest 2013] php 성능 향상 방법
DESCRIPTION
PHPFest 2013TRANSCRIPT
![Page 1: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/1.jpg)
용영환 PHPKorea
PHP 성능 향상 방법
![Page 2: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/2.jpg)
성능 = 속도 = 비용 = 이익 ?
![Page 3: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/3.jpg)
속도의 중요성
Bing 1 초 늦어지면 2.8%
2 초 늦어지면 4.8% 수익 감소
Google 0.4 초 늦췄더니 0.76% 검색
감소
Yahoo! 0.4 초 늦어지면 5~9%
트래픽 감소
![Page 4: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/4.jpg)
몇 초 안에 보여줘야 하는가
![Page 5: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/5.jpg)
2 초의 의미
Load time 2 초
= 웹브라우저에 다 보여지는
시간
![Page 6: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/6.jpg)
2 초의 의미
전체 = 2.67 초
onload = 2.13 초
![Page 7: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/7.jpg)
2 초의 의미
전체 = 3.92 초
onload = 2.96 초
![Page 8: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/8.jpg)
몇 초 안에 보여줘야 하는가
네이버
월간 마이크로소프트웨어
![Page 9: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/9.jpg)
일반적인 웹사이트
3 초 이내에 onload 이벤트 발생
4 초 이내에 전체 요소 로딩 완료
이정도를 일반적인 웹사이트 속도라고
합시다 .
![Page 10: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/10.jpg)
일반적인 웹사이트
대기시간 = 387ms전송시간 = 243ms
![Page 11: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/11.jpg)
유명 포털사이트
대기시간 = 22ms전송시간 = 102ms
![Page 12: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/12.jpg)
유명 포털사이트
대기시간 = 22ms전송시간 = 102ms
![Page 13: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/13.jpg)
속도의 중요성 ( 재탕 )
Bing 1 초 늦어지면 2.8%
2 초 늦어지면 4.8% 수익 감소
Google 0.4 초 늦췄더니 0.76% 검색
감소
Yahoo! 0.4 초 늦어지면 5~9%
트래픽 감소
![Page 14: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/14.jpg)
그래서…
우리는 대기시간을 줄여보자 .
![Page 15: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/15.jpg)
대기시간
= 서버 내부 처리 시간
= PHP + DB 에서 소비하는 시간
DB 튜닝 방법은 “ Real MySQL” 에서
![Page 16: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/16.jpg)
PHP 속도를 높이려면
1. 쪼금이라도 빠른 PHP 코드 사용하기
2. 캐시 사용하기
3. 느린 코드 리펙토링 하기
![Page 17: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/17.jpg)
쪼금 더 빠른 PHP 코드
echo ‘Hello’ 196 microsec.
print ‘hello’ 218 microsec.
http://phpbench.-
com
![Page 18: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/18.jpg)
쪼금 더 빠른 PHP 코드
echo ‘Hello’ 196 microsec.
print ‘hello’ 218 microsec.
1 microsec.= 1/1000 milisec.
1 ms 동안 echo 5 번 , print 4 번
![Page 19: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/19.jpg)
쪼금 더 빠른 PHP 코드
foreach($aHash as $key => $val);
22 microsec.
while(list($key,$val) = each($aHash))
160 microsec.
게시판 글 50 개 = 160 * 50 = 8
milisec.
반면 , foreach 는 22 * 50 = 1
milisec.
![Page 20: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/20.jpg)
쪼금 더 빠른 PHP 코드
Function vs. closure vs. lambda
![Page 21: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/21.jpg)
그런데…
저런 것들 다 신경 쓰다간 “ Mental
crash”
![Page 22: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/22.jpg)
그냥… 방을 치워
![Page 23: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/23.jpg)
사회적 동물로서 살아남는 방법
뜬금 없지만… 진리이기도 한…
“ 티끌 모아 봤자 , 티끌이다 .” - 박명수
어록
![Page 24: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/24.jpg)
그냥…
PHP 버전을 올리세요 .
5.3 은 5.2 보다 약 20% 빠르고
5.4 는 5.3 보다 30% 정도 빠릅니다 .
![Page 25: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/25.jpg)
캐시 사용하기
![Page 26: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/26.jpg)
기본적인 PHP 실행
PHP Script Parse
Compile
Excute Output
![Page 27: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/27.jpg)
Opcache PHP 실행
PHP Script
OPCache
Excute Output
![Page 28: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/28.jpg)
캐시 사용하기
PHP 5.5 부터 기본 탑재
Zend OPCache 만 적용해도 40% Up
http://www.php.net/manual/en/opcache.installa-tion.php
![Page 29: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/29.jpg)
느린 코드 리펙토링 하기
![Page 30: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/30.jpg)
느린 코드 리펙토링 하기
느린 코드 찾겠다고
산을 다 파헤치지는
말자 .
![Page 31: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/31.jpg)
프로파일링
프로그램이 실행되는 과정을 기록하여
개발자가 인간으로 살 수 있게 돕는다 .
^__^
![Page 32: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/32.jpg)
프로파일링
많이 쓰는 디버거
- Xdebug = 무료
- Zend debug = 사실상 유료
![Page 33: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/33.jpg)
프로파일링
많이 쓰는 분석툴
- WinCacheGrind = 무료
- Kcachegrind = 무료
![Page 34: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/34.jpg)
프로파일링
가장 많이 쓰는 (?) 조합
Xdebug + WinCacheGrind = 무료
![Page 35: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/35.jpg)
프로파일링
DEMO
![Page 36: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/36.jpg)
병목 ? 어떻게 테스트 하는가
DEMO
![Page 37: [PHPFest 2013] PHP 성능 향상 방법](https://reader031.vdocuments.net/reader031/viewer/2022012405/5584c678d8b42aeb138b48b2/html5/thumbnails/37.jpg)
주의 ! 검거 될 수 있습니다 .