22. 在Yii2中如何使用XHProf性能分析工具

“XHProf是PHP的功能级别分层分析器,具有简单的基于HTML的导航界面。 原始数据收集组件以C(作为PHP扩展)实现。 报告UI层全部在PHP中。 它能够报告功能级别的调用时间,内存使用情况,CPU时间和每个功能的呼叫次数。 此外,它还支持比较两个运行(分层DIFF报告)的能力,或多个运行的聚合结果。”

1. 系统版本:

commond:@uname -a
Linux Edge 3.16.0-36-generic #48~14.04.1-Ubuntu SMP Wed Apr 15 13:11:28 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

2. php版本

commond:@php -v
PHP 5.5.9-1ubuntu4.9 (cli) (built: Apr 17 2015 11:44:57) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

3. xhprof

XHProf下载

需要安装作图工具扩展:graphviz

sudo apt-get install graphviz

4. @see参考源网址

http://www.cnblogs.com/wangtao_20/archive/2013/09/13/3320497.html

5. 将xhprof文件夹拷贝到apache2能访问到的目录中

/home/zhgxun/Public/html/xhprof

6.在公共目录中建立文件

XHProf.php

引入以下两个文件,可以单独拷贝,这里使用路径方式

include_once "../../../xhprof/xhprof_lib/utils/xhprof_lib.php";
include_once "../../../xhprof/xhprof_lib/utils/xhprof_runs.php";

这一步才是紧要的,手册里其实已经准备的很好了,我遇到的问题是,在对应位置使用

xhprof_enable();

// ......

xhprof_disable();

打印数据已经呈现,但是没有再日记记录中发现该文件,但是使用官方提供的例子立马就生成了日记文件我就想到路径的问题,就是说必须使用这两个文件xhprof_lib.php和xhprof_runs.php才可能在框架中生成日记文件。然后就尝试引入该文件后,顺利解决了这个问题,只是没有进行封装,也不麻烦,但清楚一些。

7. 在控制器中使用

引入;

include "../../common/core/XHProf.php";

开启:

xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

使用该方法来调用:

//需要使用绝对路径,就是加\标识,否则会在当前命名空间中查找该类
$objXhprofRun = new \XHProfRuns_Default();
$objXhprofRun->save_run(xhprof_disable(), $this->id . '-' . $this->action->id);