什么是 xhprof?
xhprof:Facebook 开源的轻量级PHP性能分析工具。绘制调用关系图,提供了图形化的界面展示性能参数和过程。它报告函数级别的请求次数和各种指标。包括阻塞时间、CPU时间和内存使用情况,有助于开发者有针对性去进行优化相应逻辑。
安装xhprof的扩展
1、选择对应PHP版本的扩展进行下载。
打印函数 phpinfo() ,查看自己PHP版本情况:PHP 7.3 NTS




2、配置Xhprof扩展生效
将下载好的php_xhprof-2.3.5-7.3-nts-vc15-x64.zip解压到某个目录,将目录里的php_xhprof.dll文件,拷贝到PHP安装目录下的ext目录下。
修改php.ini文件,增加如下图所示的代码
extension=php_xhprof.dll
#xhprof.output_dir代表的是性能分析图文件保存的位置,路径可以自定义。需要自己创建好文件夹
xhprof.output_dir="D:/phpstudy_pro/Extensions/tmp/xhprof"
重启nginx、再次查看phpinfo()如图所示,代表Xhprof扩展已经安装完毕

xhprof的实践使用
1、下载demo代码
下载demo代码压缩包地址:https://pecl.php.net/package/xhprof

将压缩包解压到一个文件目录下

2、配置demo代码站点
通过nginx或apache配置成一个可访问的站点目录

3、执行demo代码
执行demo代码,生成性能分析图文件。(访问站点examples目录下sample.php文件)

4、查看demo代码生成的性能报告
访问查看性能分析报告图,经行分析代码调用情况与耗时情况,就可以去优化最耗时间的代码就可以了。(访问xhprof_html目录)

点击刚运行demo生成的.xhprof

点击 [View Full Callgraph] ,可以查看该分析报告的请求执行流程图

如上图所示,xhprof会通过 黄色,红色,以及一根比较粗的灰色的线,为我们标识出主要的耗时路线。调用红色是耗时最大的函数调用,通过分析这个图片我们可以看出哪里耗时长,从而有针对性的去做优化。
如果点击之后报如下错误:failed to execute cmd: " dot -Tpng". stderr: `sh: dot: command not found '
可能原因:1、服务器没有安装画图软件 graphviz, 2、或者是给定的dot命令路径不对。
下载安装后,配置完dot命令,再回来点击 View Full Callgraph,即可。
下载Graphviz
1、下载安装Graphviz

安装graphviz,安装一直 next 即可。默认的安装路径,可以自行修改。记住安装目录

修改xhprof_lib\utils\callgraph_utils.php的第110行如图所示,改成自己的安装路径即可。
