乐趣区

关于php:PHP-xdebug-分析代码性能瓶颈

通常启用了 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 文件输入之后,如果本地我的项目多的话,很容易占用磁盘大面积空间,下图是我半年左右没有清理的状态:

能够应用命令进行清理:

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

参考链接

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