PHP性能检测之xhprof的安装和应用
- 目录
- 1.前言
- 2.下载xhprof客户端包
- 2.1windows下安装扩展
- 2.2linux下安装扩展
- 3.开启分析与存储结果
- 4.查看分析结果
- 4.1查看测试列表
- 4.2安装Graphviz插件
- 4.3点击view full callgraph 链接查看
- 5.异常与解决
1.前言
在前面的文章(PHP之程序性能优化思路)中,我们简单的介绍了一款PHP性能分析工具XHPorf,但是没有深入讲解如何安装到wamp环境下,下面我们对其安装和测试详细了解
2.下载xhprof客户端包
2.1windows下安装扩展
PHP性能分析工具XHPorf下载链接:https://pan.baidu.com/s/1_uYjtUAasxtXOCx6r4o9lA
提取码:a2gb
下载后,将其放到WWW根目录
首先将文件里的下面这两个包放到php的ext文件下
然后在php的php.ini文件中加入这段
可复制代码:
[xhprof] extension=php_xhprof.dll ; directory used by default implementation of the iXHProfRuns ; interface (namely, the XHProfRuns_Default class) for storing ; XHProf runs. xhprof.output_dir="F:\wamp\www\xhprof-0.9.3\xprof_log"
注意xhprof.output_dir的路径必须指向下图文件夹的xprof_log
最后查看phpinfo.php,当你能够查看到下图所示,就表示php扩展正常开启
2.2linux下安装扩展
安装命令:
wget http://pecl.php.net/get/xhprof-0.9.2.tgz tar zxf xhprof-0.9.2.tgz cd xhprof-0.9.2/extension/ sudo phpize ./configure --with-php-config=/usr/local/php/bin/php-config sudo make sudo make install
把生成的 xhprof.so 放到扩展的目录下,并配置记录存放的路径
3.开启分析与存储结果
可以前往文件的案例查看如何使用(路径如下图所示)
该文件内重要的两个函数是
4.查看分析结果
4.1查看测试列表
在xhprof-0.9.3/xhprof_html/里面就保存着我们所需要的测试结果
点击进去,就能看到性能测试结果
而点击[View Full Callgraph]就能转换成图形解释(需要安装插件)
4.2安装Graphviz插件
下载地址:http://www.graphviz.org/download/
修改配置文件 config.php如下:
4.3点击view full callgraph 链接查看
上图的红色节点是整个php程序执行过程中的瓶颈,黄色路径为整个过程耗时最长的路径
输出结果的含义:
ct 函数调用次数 wt 花费的时间 cpu 花费的 CPU 时间(微秒即百万分之一秒) mu 使用的内存(bytes) pmu 使用的内存峰值(bytes)
web 分析结果页面含义:
Calls:函数的调用次数 Incl. Wall Time (microsec) :包含内部函数花费的时间,单位微秒 Excl. Wall Time (microsec):不包含内部函数花费的时间,单位微秒 及所占百分比(%)
注:
Incl.:为 Including 包含的简写; Excl.:为 Excluding 不包含的简写 Wall Time:意为挂钟时间即任务花费的时间 main():一个虚构的函数,程序根节点 [email protected]:递归调用 2 次
Incl. CPU (microsecs):包含内部函数 CPU 花费的时间,单位微秒 Excl. CPU (microsec):不包含内部函数 CPU 花费的时间,单位微秒 Incl. MemUse (bytes):包含内部函数所占内存,单位字节 Excl. MemUse (bytes):不包含内部函数所占内存,单位字节 Incl. PeakMemUse (bytes):包含内部函数所占内存峰值,单位字节 Excl. PeakMemUse (bytes):不包含内部函数所占内存峰值,单位字节 及所占百分比(%)
可以认为共三种情况:
- 1. 包括内部函数
- 2. 不包括内部函数或者说函数本身
- 3. 所占总数(时间或内存使用)的百分比
5.异常与解决
报错:Xhprof graphviz Warning: proc_open() [function.proc-open]: CreateProcess failed, error code
解决参考:https://www.cnblogs.com/wuxiang12580/p/10346847.html