不积跬步,无以至千里

xhprof安装和使用

安装

1. 下载

根据自己PHP版本下载,phpinfo()查看自己是TS/NTS VC9/VC11下载对应的版本,地址[http://windows.php.net/downloads/pecl/releases/xhprof/0.10.6/]

2. 解压扩展

php_xhprof.dll 解压到php安装目录的ext里

3. 配置扩展

配置php.ini文件 extension=php_xhprof.dll;
调试信息的保存路径(该路径为调试文件生成和web工具读取路径 xhprof.output_dir= "D:/phpStudy/WWW/xhprof_log"

重启APACHE,查看是否安装成功。

4. 下载web工具

下载地址[https://github.com/facebook/xhprof]

  • 解压xhprof-master到www目录
  • 运行http://localhost/xhprof/examples/sample.php 生成测试数据
  • 访问http://localhost/xhprof/xhprof_html/ 查看数据列表
  • 点击[View Full Callgraph] 报错需要安装Graphviz
5. 安装Graphviz
  • 下载
    从graphviz官网下载 [http://www.graphviz.org/Download.php](目测这个已经挂了)
    或者从我的百度网盘下载 [http://pan.baidu.com/s/1i3mzunV]
    下载完后直接安装
  • 配置环境变量或者修改cmd 命令
    将下图配置到系统的环境变量

    或者修改下图文件中的cmd命令


    这时候点击就会有图片出来

使用

将xhprof使用到实际项目中,可以根据sample.php适当修改

            //开始监测,增添CPU数据,内存数据
            xhprof_enable(XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);
            $result = $this->resourceStockModel->specifyVender($param);

            //停止监测,并将监测结果保存到xhprof_data里面,此结果是一个多维数组
            $xhprof_data = xhprof_disable();

            //输出监测结果
//            print_r($xhprof_data);

            //得到xprof的根目录,通过根目录引入xhprof_lib.php和xhprof_runs.php这两个文件
            $XHPROF_ROOT = 'D:\phpStudy\WWW\xhprof';
            include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
            include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";

            //得到一个XHProfRuns_Default对象,其save_run方法可以将监测结果写入到一个日志文件中,然后返回日志文件名的前面一串ID
            $xhprof_runs = new XHProfRuns_Default();
            $run_id = $xhprof_runs->save_run($xhprof_data, "test_xhprof");

            //输出一个链接,指向解析run_id后的页面
//            echo '<br>' . '<a href="/xhprof/xhprof_html/index.php?run='.$run_id.'&source=test_xhprof" target="_blank">result</a>';

附录

  • 红色的矩形部分就是性能开销大,需要优化的函数,
  • 白色的矩形部分就是性能开销正常,不需要优化的函数,
  • 黄色的矩形部分相对于白色矩形稍微有一些性能开销,但是没有红色矩形那么大,也就是性能开销在白色矩形和红色矩形之间
名称 含义
FunctionName 调用的函数名
Calls/Calls % 函数的调用次数,以及百分比。可以检查调用次数高的函数是否有必要。
Incl. Wall Time (microsec) 函数运行时间(包括子函数)
Excl. Wall Time(microsec) 函数运行时间(不包括子函数),这里可以倒叙,优化消耗时间最高的函数
Incl. CPU(microsecs) 函数运行CPU(包括子函数)
Excl. CPU(microsecs) 函数运行CPU(不包括子函数 )
Incl.MemUse(bytes) 函数运行消耗内存(包括子函数)
Excl.MemUse(bytes) 函数运行消耗内存(不包括子函数)
posted @ 2018-03-06 14:55  昃昃  阅读(431)  评论(0编辑  收藏  举报
Just Do It !