보통 xdebug
플러그인이 활성화되고 성능 테스트 출력 파일이 생성됩니다. , 일반적으로 cachegrind.out.xxxx
파일이 존재합니다. xdebug
插件,性能测试输出文件会伴随生成,通常是以cachegrind.out.xxxx
文件存在。
该文件可以通过第三方工具来进行代码性能分析。
但如果本地有多个项目/网站,所有的profile 都输出到一个文件中了,这样并不方便后面进行性能分析。
自定义profile 文件名称
可以通过配置xdebug.profiler_output_name
参数来设置输出文件名称,部分参数如下:
符号 | 含义 | 配置样例 | 样例文件名 |
---|---|---|---|
%c | 当前工作目录的crc32校验值 | cachegrind.out.%c | cachegrind.out.1258863198 |
%p | 当前服务器进程的pid | cachegrind.out.%p | cachegrind.out.9685 |
%r | 随机数 | cachegrind.out.%r | cachegrind.out.072db0 |
%s | 脚本文件名(注) | cachegrind.out.%s | cachegrind.out._home_httpd_html_test_xdebug_test_php |
%t | Unix时间戳(秒) | cachegrind.out.%t | cachegrind.out.1179434742 |
%u | Unix时间戳(微秒) | cachegrind.out.%u | cachegrind.out.1179434749_642382 |
%H | $_SERVER['HTTP_HOST'] | cachegrind.out.%H | cachegrind.out.localhost |
%R | $_SERVER['REQUEST_URI'] | cachegrind.out.%R | cachegrind.out._test_xdebug_test_php_var=1_var2 |
%S | session_id (来自$_COOKIE 如果设置了的话) | cachegrind.out.%S | cachegrind.out.c70c1ec2375af58f74b390bbdd2a679d |
%% | %字符 | cachegrind.out.%% | cachegrind.out.%% |
编辑php.ini
配置文件:
xdebug.profiler_output_name = cachegrind.out.%H
然后重启 php server。
在Mac 下,profile 文件存放于/var/tmp/
目录中。
性能分析
在Mac 下,有MacCallGrind 和 qcachegrind 可以使用,不过前者是收费,直接通过Apple Store下载,后者是免费。需要手动安装。
安装graphviz,用来Call Graph功能:
$ brew install graphviz
安装 qcachegrind:
$ brew install qcachegrind
安装完成之后,就可以打开 qcachegrind
应用了,图形界面如下:
其他
不过需要注意,开启了profile
하지만 로컬에 여러 프로젝트/웹사이트가 있는 경우 모든 프로필이 하나의 파일로 출력되므로 나중에 성능 분석에 편리하지 않습니다. 사용자 정의된 프로필 파일 이름
xdebug.profiler_output_name
매개변수를 구성하여 출력 파일 이름을 설정할 수 있습니다. 일부 매개변수는 다음과 같습니다.
기호 | 의미 | 구성 샘플 | 샘플 파일 이름 |
---|---|---|---|
%c | 현재 작업 디렉터리의 Crc32 확인 값 | cachegrind.out.%c | cachegrind.out.1258863198 |
%p | 현재 서버 프로세스의 pid | cachegrind.out.%p | 캐시그라인드.아웃 .9685 |
%r | 임의의 숫자 | cachegrind.out.%r | 캐시그라인드.out .072db0 |
%s | 스크립트 파일 이름(참고) | cachegrind.out.%s | cachegrind.out._home_httpd_html_test_xdebug_test_php |
%t | Unix 타임스탬프(초) | cachegrind.out.%t td> | cachegrind.out.1179434742 |
%u | Unix 타임스탬프(마이크로초) | cachegrind.out .%u | cachegrind.out.1179434749_642382 |
%H | $_SERVER['HTTP_HOST'] | cachegrind.out.%Hcachegrind.out.localhost | |
%R | $_SERVER['REQUEST_URI'] | cachegrind.out.%R | cachegrind.out._test_xdebug_test_php_var=1_var2 |
%S | session_id(설정된 경우 $_COOKIE에서) | cachegrind.out.%S | cachegrind.out.c70c1ec2375af58f74b390bbdd2a679d |
% % | % 문자 | cachegrind.out.%% | cachegrind.out.%% |