CentOS에서 XDebug를 이용해 PHP 프로파일링 하기

XDebug

php로 작성한 웹어플리케이션을 디버깅하고 프로파일링할 때 사용한다.


설치하기

xdebug 홈페이지에는 phpinfo() 정보를 넣으면, 설치 가이드가 출력되는 웹페이지 있다.

http://xdebug.org/wizard.php


예)

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는 리눅스용과 윈도우즈용이 있다.

로그 파일을 다운로드 해야 하는 불편함은 있지만,

로그 파일의 크기에 상관없이 잘 되며, 가장 유용하게 사용할 수 있다.