CentOS에서 XDebug를 이용해 PHP 프로파일링 하기
XDebug
php로 작성한 웹어플리케이션을 디버깅하고 프로파일링할 때 사용한다.
설치하기
xdebug 홈페이지에는 phpinfo() 정보를 넣으면, 설치 가이드가 출력되는 웹페이지 있다.
예)
phpinfo()정보를 html 소스 형태로 뽑아 붙여넣기.
phpinfo()정보에 따라 가이드가 출력된다.
프로파일러 활성화
php.ini에 프로파일러 설정 추가
[xdebug]
zend_extension = /usr/lib64/php/modules/xdebug.so
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = /tmp
xdebug.profiler_output_name = cachegrind.out.%t.%p;
특정한 페이지만 프로파일링 하고 싶을 때
xdebug.profiler_enable_trigger=1
GET/POST 파라미터 또는 쿠키 이름을 XDEBUG_PROFILE로 지정하면 가동된다.
사용 예) http://localhost/aaa?XDEBUG_PROFILE
분석툴
편하게 사용할 수 있는 툴은 Webgrind과 WinCacheGrind, KCacheGrind등이 있다.
Webgrind는 php 기반으로 작성되어 있다. xdebug가 설치된 웹서버에 설치하면 된다.
장점은 웹페이지에서 쉽게 프로파일링 로그를 확인 할 수 있다.
단점은 xdebug에서 로그 파일을 하나로 설정하면 읽지 못하여, 분석하기가 어렵다.
WinCacheGrind는 윈도우즈 환경에서 분석할 수 있는 툴이다.
단점은 로그 파일 사이즈가 2메가 이상되면 읽지 못한다. 사용할 가치가 없다.
KCachegrind는 리눅스용과 윈도우즈용이 있다.
로그 파일을 다운로드 해야 하는 불편함은 있지만,
로그 파일의 크기에 상관없이 잘 되며, 가장 유용하게 사용할 수 있다.