Normalerweise ist das Plug-in xdebug
aktiviert und die Ausgabedatei für den Leistungstest wird generiert , normalerweise mit der Datei 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
Aber wenn mehrere Projekte/Websites lokal vorhanden sind, werden alle Profile in einer Datei ausgegeben, was für eine spätere Leistungsanalyse nicht praktisch ist. Benutzerdefinierter Profildateiname
Sie können den Namen der Ausgabedatei festlegen, indem Sie den Parameter xdebug.profiler_output_name
konfigurieren. Einige Parameter lauten wie folgt:
Symbol | Bedeutung | Konfigurationsbeispiel | Name der Beispieldatei |
---|---|---|---|
%c | Crc32-Prüfwert des aktuellen Arbeitsverzeichnisses | cachegrind.out.%c | cachegrind.out.1258863198 |
%p | Die PID des aktuellen Serverprozesses | cachegrind.out.%p | cachegrind.out .9685 |
%r | Zufallszahl | cachegrind.out.%r | cachegrind.out .072db0 |
%s | Name der Skriptdatei (Hinweis) | cachegrind.out.%s | cachegrind.out._home_httpd_html_test_xdebug_test_php |
%t | Unix-Zeitstempel (Sekunden) | cachegrind.out.%t td> | cachegrind.out.1179434742 |
%u | Unix-Zeitstempel (Mikrosekunden) | 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 (von $_COOKIE, falls gesetzt) | cachegrind.out.%S | cachegrind.out.c70c1ec2375af58f74b390bbdd2a679d |
% % | % Zeichen | cachegrind.out.%% | cachegrind.out.%% |