通常启用了xdebug插件,性能测试输入文件会随同生成,通常是以cachegrind.out.xxxx 文件存在。

该文件能够通过第三方工具来进行代码性能剖析。

但如果本地有多个我的项目/网站,所有的profile 都输入到一个文件中了,这样并不不便前面进行性能剖析。

自定义profile 文件名称

能够通过配置xdebug.profiler_output_name 参数来设置输入文件名称,局部参数如下:

符号含意配置样例样例文件名
%c当前工作目录的crc32校验值cachegrind.out.%ccachegrind.out.1258863198
%p以后服务器过程的pidcachegrind.out.%pcachegrind.out.9685
%r随机数cachegrind.out.%rcachegrind.out.072db0
%s脚本文件名(注)cachegrind.out.%scachegrind.out._home_httpd_html_test_xdebug_test_php
%tUnix工夫戳(秒)cachegrind.out.%tcachegrind.out.1179434742
%uUnix工夫戳(微秒)cachegrind.out.%ucachegrind.out.1179434749_642382
%H$_SERVER['HTTP_HOST']cachegrind.out.%Hcachegrind.out.localhost
%R$_SERVER['REQUEST_URI']cachegrind.out.%Rcachegrind.out._test_xdebug_test_php_var=1_var2
%Ssession_id (来自$_COOKIE 如果设置了的话)cachegrind.out.%Scachegrind.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文件输入之后,如果本地我的项目多的话,很容易占用磁盘大面积空间,下图是我半年左右没有清理的状态:

能够应用命令进行清理:

$ sudo rm -fr /private/var/tmp/cachegrind.out.*

参考链接

  • 应用xdebug对php进行profile的输入
  • php+xdebug+qcachegrind(mac)性能剖析