프로파일러 시작하기
php.ini 에서 xdebug.profiler_enable 옵션을 1 로 설정하면 xdebug.profiler_output_dir 에 세팅된 디렉토리로 프로파일 데이터가 저장됨. 프로파일 데이터가 저장되는 파일의 이름은 항상 "cachegrind.out." 으로 시작되고 PID나 디버깅되는 스크립트가 들어있는 디렉토리의 crc32 hash 값으로 끝남. 프로파일러를 사용하기 위해선 항상 xdebug.profiler_output_dir 에 지정된 디렉토리의 공간에 신경써야 함.
xdebug.profiler_enable_trigger 값을 1 로 설정하면 선택적으로 프로파일러를 실행시킬 수 있음. (GET/POST/COOKIE 값에 변수명을 XDEBUG_PROFILE 로 지정하고 request를 하면 실행됨) FireFox 2의 extension은 이 방법으로 프로파일러를 실행시킴. 만약 선택적으로 프로파일러를 실행시키려고 한다면, xdebug.profiler_enable을 0 으로 세팅해야 제대로 동작함.
프로파일 분석
KCacheGrind의 대략적인 설명만 나와 있으므로 KCacheGrind의 Documentation 페이지 참고 => http://kcachegrind.sourceforge.net/html/Documentation.html
(어차피 대략 보면 직관적으로 알 수 있는 내용들임...)
ini options
xdebug.profiler_append
type |
integer |
default value |
0 |
description |
이 옵션값이 1 로 세팅되면, 같은 요청으로 생성된 프로파일러 파일에 데이터를 쓸 때 overwrite 하지 않고 append 형식으로 저장됨. xdebug.profiler_output_name 설정값에 따라 append 하지 않고 매번 새로운 파일에 쓸 수도 있음) |
xdebug.profiler_enable
type |
integer |
default value |
0 |
description |
이 옵션값이 1 로 세팅되면 Xdebug는 profile_output_directory에 설정된 디렉토리에 프로파일러 파일을 생성함. 이 옵션은 PHP 스크립트의 ini_set() 함수로는 세팅할 수 없음. 만약 프로파일러를 선택적으로 실행시키고 싶다면 이 옵션은 끄고, xdebug.profiler_enable_trigger 를 1 로 세팅하는 방법을 사용할 것. |
xdebug.profiler_enable_trigger
type |
integer |
default value |
0 |
description |
이 옵션값이 1 로 세팅되면 GET/POST/COOKIE 에 XDEBUG_PROFILE 이라는 키를 가지는 데이터를 세팅함으로써 프로파일러를 실행시킬 수 있음. 요청시마다 매번 프로파일러 파일이 만들어지는 것을 방지하기 위해 xdebug.profiler_enable 값을 0 으로 세팅해야 함. |
xdebug.profiler_output_dir
type |
string |
default value |
/tmp |
description |
프로파일러 파일이 생성될 디렉토리 경로. PHP가 쓰기 권한을 가지는 경로인지 반드시 체크할 것. 이 옵션은 스크립트의 ini_set() 함수로 세팅할 수 없음. |
xdebug.profiler_output_name
type |
string |
default value |
cachegrind.out.%p |
description |
trace 파일이름을 정하듯이 프로파일러 파일의 이름을 정함. trace 파일의 이름을 정하는 데 사용한 format specifiers 를 이용할 수 있음. 참고 => xdebug - 함수 추적 |