1、安装扩展

  windows下把 xhprof.dll 放到extensions目录下

修改配置文件

[xhprof]
extension=xhprof.so;
; directory used by default implementation of the iXHProfRuns
; interface (namely, the XHProfRuns_Default class) for storing
; XHProf runs.
;
;xhprof.output_dir=<directory_for_storing_xhprof_runs>
;调试信息的保存路径
xhprof.output_dir=/tmp/xhprof

linux下安装

wget http://pecl.php.net/get/xhprof-0.9.2.tgztar zxf xhprof-0.9.2.tgzcd xhprof-0.9.2/extension/sudo phpize
./configure --with-php-config=/usr/local/php/bin/php-config
sudo make
sudo make install

把生成的 xhprof.so 放到扩展的目录下,并配置记录存放的路径

php中增加调试代码 sample.php 文件

function bar($x) {if ($x > 0) {bar($x - 1);}
}function foo() {for ($idx = 0; $idx < 5; $idx++) {bar($idx);$x = strlen("abc");}
}//开启调试
xhprof_enable();

// cpu:XHPROF_FLAGS_CPU 内存:XHPROF_FLAGS_MEMORY
// 如果两个一起:XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY 
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

//要测试的php代码
foo();//停止监测
$xhprof_data = xhprof_disable();// display raw xhprof data for the profiler run
print_r($xhprof_data);//包含工具类,在下载的 tgz 包中可以找到
$XHPROF_ROOT = realpath(dirname(__FILE__) .'/..');
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";// save raw data for this profiler run using default
// implementation of iXHProfRuns.
$xhprof_runs = new XHProfRuns_Default();// xhprof_foo 指命名空间,可以为任意字符串
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");echo "---------------\n"."Assuming you have set up the http based UI for \n"."XHProf at some address, you can view run at \n"."http://<xhprof-ui-address>/index.php?run=$run_id&source=xhprof_foo\n"."---------------\n";

以表格方式查看

  访问地址:http://test.cm/xhprof/xhprof_html/index.php?run=539d612de570e&source=xhprof_foo

run后的参数指生成的文件名, 目录再php.ini中的 xhprof.output_dir 指定

以图表方式查看

  1、安装 Graphviz  软件(windows,linux版都有)

  2、修改配置文件 config.php

 

  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():一个虚构的函数,程序根节点
bar@2:递归调用 2 次
Incl. CPU (microsecs):包含内部函数 CPU 花费的时间,单位微秒
Excl. CPU (microsec):不包含内部函数 CPU 花费的时间,单位微秒
Incl. MemUse (bytes):包含内部函数所占内存,单位字节
Excl. MemUse (bytes):不包含内部函数所占内存,单位字节
Incl. PeakMemUse (bytes):包含内部函数所占内存峰值,单位字节
Excl. PeakMemUse (bytes):不包含内部函数所占内存峰值,单位字节
及所占百分比(%)可以认为共三种情况:
1. 包括内部函数
2. 不包括内部函数或者说函数本身
3. 所占总数(时间或内存使用)的百分比

参考文章:http://blog.aboutc.net/profiling/17/php-profiler-xhprof

     http://www.cnblogs.com/bluefrog/archive/2012/03/01/2374922.html

    软件下载(并非官方源文件)http://dev.freshsite.pl/php-extensions/xhprof.html

来源:http://www.cnblogs.com/siqi/p/3790186.html

xhprof 安装使用(windows linux混版)相关推荐

  1. fossid安装教程_如何在一个 U 盘上安装多个 Linux 发行版

    本教程介绍如何在一个 U 盘上安装多个 Linux 发行版.这样,你可以在单个 U 盘上享受多个现场版live Linux 发行版了. 我喜欢通过 U 盘尝试不同的 Linux 发行版.它让我可以在真 ...

  2. 中标麒麟系统u盘安装_U盘安装中标麒麟Linux桌面版的方法

    U盘安装中标麒麟Linux桌面版的方法 发布时间:2014-11-16 14:21:35来源:红联作者:qajcsyq (无法插图,希望大家仔细理解) U盘安装中标麒麟桌面版分以下几步. 第一步:下载 ...

  3. 检查suse是否安装ftp服务,安装:SuSE Linux FTP版安装指南(转)

    安装:SuSE Linux FTP版安装指南(转)[@more@]在安装之前我要罗嗦几句:SuSE OS有iso/bin与ftp两种,其中iso基本上是测试版,是一些linux 爱好者自己做,而官方只 ...

  4. Linux 桌面玩家指南:11. 在同一个硬盘上安装多个 Linux 发行版以及为 Linux 安装 Nvidia 显卡驱动...

    Linux 桌面玩家指南:11. 在同一个硬盘上安装多个 Linux 发行版以及为 Linux 安装 Nvidia 显卡驱动 原文:Linux 桌面玩家指南:11. 在同一个硬盘上安装多个 Linux ...

  5. mac要装anaconda吗_Anaconda安装教程|Windows,Linux ,Mac OS

    Anaconda是一个包含多种实用库的Python发行版,直接安装它就不用再自己费力安装常用库了(包括Numpy.Pandas之类的都自带了),是科研和开发的好工具 下载Anaconda 去Anaco ...

  6. 如何安装微软的Linux发行版CBL-Mariner 1.0

    CBL-Mariner 1.0 是微软为内部使用而开发的这个新 Linux 发行版的第一个稳定版本. 了解如何在 VirtualBox 上安装它. 毫无疑问,微软近年来对 Linux 表现出了更多的真 ...

  7. linux下sqlmap安装教程,(转)Sqlmap官网下载与安装教程[windows/linux版本]

    转自:http://www.vuln.cn/2000 sqlmap的功能与强大性不必多言,方便大家下载,给大家整理了下sqlmap最新版的官网与github下载地址. 官网下载地址 github下载 ...

  8. WSL:删除已安装好的Linux 发行版

    如果您从 Windows 11 或 10 上的备份中导入 Linux 发行版,您将找不到从"设置"应用.命令提示符或 PowerShell 中卸载它的选项.在这种情况下,您需要取消 ...

  9. linux中python编译器的配置_PyCharm配置虚拟编译环境(windows/linux通用版)

    无论哪一个虚拟环境都需要依靠python官方的包(python2.×/python3.×),所以第一件事情就是要安装一个python包,主要途径如下:安装anaconda,目前最方便的python环境 ...

最新文章

  1. 最新、最全面的LAMP+wordpress安装过程!!
  2. [转]ExtJs基础--Html DOM、Ext Element及Component三者之间的区别
  3. java ee ide 假死_Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
  4. [转】TCP 三次握手 四次挥手
  5. python sklearn 支持向量机_python机器学习库sklearn之支持向量机svm介绍
  6. jstorm mysql_Jstorm+Spring+mybatis整合
  7. C/C++中存储区域
  8. Tomcat修改端口号(7.0 version)
  9. 最好用的 5 款 React 富文本编辑器
  10. 学生作业管理系统java源码_基于jsp的学生作业管理-JavaEE实现学生作业管理 - java项目源码...
  11. 十大排序算法之二路归并排序(难点为对于递归的理解)
  12. python怎么安装requests包_python怎么安装requests库
  13. git软件版本管理工具
  14. 双击桌面计算机打不开硬盘,双击硬盘盘符打不开只能右键打开的解决方法 -电脑资料...
  15. 艾拉物联:标准协议不同,碎片化将是IoT长期挑战
  16. Js根据拼音首字母分组
  17. 完全二叉树 满二叉树
  18. python小游戏:像素鸟
  19. 基于linux的web自动化(selenium+jenkins+linux+firefox)
  20. 城市照明的“神经末梢”——PLC-IoT单灯控制器

热门文章

  1. Ambari2.7.0 + HDP3.1.4.0安装,hdfs数据备份和恢复,hive数据备份和恢复,hbase数据备份和恢复,常见错误总结,Ambari卸载,hadoop-ha,hive和ES整合
  2. 查看当前服务器中的所有的topic,创建topic,删除topic,通过shell命令发送消息,通过shell消费消息,查看topic详情,对分区数进行修改
  3. Java的calendar类用法
  4. Struts2异常处理机制
  5. Python 操作 MySQL 数据库
  6. VNC介绍(第一篇)
  7. 解决:RuntimeError: CUDA out of memory. Tried to allocate 2.00 MiB
  8. 使用ulimit设置文件最大打开数
  9. (转) 一张图解AlphaGo原理及弱点
  10. JavaScript在物联网中的应用