一、安装xhprof

wget http://pecl.php.net/get/xhprof-0.9.4.tgz
tar -zxvf xhprof-0.9.4.tgz
cd xhprof-0.9.4/extension/
phpize
./configure && make && make install or pecl install xhprof-beta

二、配置PHP.ini

[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

三、测试

server php-fpm restart
yum install -y graphviz
cp examples xhprof_html xhprof_lib /data/www/xhprof/ -R

如果查看[View Full Callgraph]的时候,却提示如下:Error: either we can not find profile data for run_id 4d7f0bd99a12f or the threshold 0.01 is too small or you do not have ‘dot’ image generation utility installed

1、可能是PNG类库没有安装好,下载地址http://sourceforge.net/projects/libpng/files/

2、可能是PHP安全配置,比如开启了安全模式,执行系统的命令的函数给禁用了

测试代码如下

<?php

function bar($x) {
if ($x > 0) {
bar($x - 1);
}
} function foo() {
for ($idx = 0; $idx < 5; $idx++) {
bar($idx);
$x = strlen("abc");
}
} // start profiling
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); // run program
foo(); // stop profiler
$xhprof_data = xhprof_disable(); // display raw xhprof data for the profiler run
print_r($xhprof_data); $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(); // save the run under a namespace "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";

运行结果

参数说明

Inclusive Time (or Subtree Time): Includes time spent in the function as well as in descendant functions called from a given function.
Exclusive Time/Self Time: Measures time spent in the function itself. Does not include time in descendant functions.
Wall Time: a.k.a. Elapsed time or wall clock time.
CPU Time: CPU time in user space + CPU time in kernel space 主要指标:
Inclusive Time (或子树时间):包括子函数所有执行时间。
Exclusive Time/Self Time:函数执行本身花费的时间,不包括子树执行时间。
Wall时间:花去了的时间或挂钟时间。
CPU时间:用户耗的时间+内核耗的时间 # 如果xhprof_enable函数写作:xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY)可以输出更多指标。
Function Name 函数名
Calls 调用次数
Calls% 调用百分比 # 消耗时间
Incl. Wall Time (microsec) 调用的包括子函数所有花费时间 以微秒算(一百万分之一秒)
IWall% 调用的包括子函数所有花费时间的百分比
Excl. Wall Time (microsec) 函数执行本身花费的时间,不包括子树执行时间,以微秒算(一百万分之一秒)
EWall% 函数执行本身花费的时间的百分比,不包括子树执行时间 # 消耗CPU
Incl. CPU(microsecs) 调用的包括子函数所有花费的cpu时间。减Incl. Wall Time即为等待cpu的时间
ICpu% Incl. CPU(microsecs)的百分比
Excl. CPU(microsec) 函数执行本身花费的cpu时间,不包括子树执行时间,以微秒算(一百万分之一秒)。
ECPU% Excl. CPU(microsec)的百分比 # 消耗内存
Incl.MemUse(bytes) 包括子函数执行使用的内存。
IMemUse% Incl.MemUse(bytes)的百分比
Excl.MemUse(bytes) 函数执行本身内存,以字节算
EMemUse% Excl.MemUse(bytes)的百分比 # 消耗内存峰值
Incl.PeakMemUse(bytes) Incl.MemUse的峰值
IPeakMemUse% Incl.PeakMemUse(bytes) 的峰值百分比
Excl.PeakMemUse(bytes) Excl.MemUse的峰值
EPeakMemUse% EMemUse% 峰值百分比

四、更好的注入方式

了解了上面这些,其实就已经可以将xhprof整合到任何我们已有的项目中去了,目前大部分MVC框架都有唯一的入口文件,只需要在入口文件的开始处注入xhprof的逻辑

<?php
//启动xhprof
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); register_shutdown_function(function() {
$xhprof_data = xhprof_disable(); //让数据收集程序在后台运行
if (function_exists('fastcgi_finish_request')) {
fastcgi_finish_request();
} $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"; //保存统计数据,生成统计ID和source名称
$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo"); //source名称是xhprof_foo file_put_contents("/data/www/x.test.com/2.txt","http://x.test.com:8081/xhprof/xhprof_html/index.php?run=" . $run_id . "&source=xhprof_foo\n",FILE_APPEND); });

但是这样免不了要修改项目的源代码,其实php本身就提供了更好的注入方式,比如将上述逻辑保存为/opt/inject.php,然后修改php fpm配置文件

//修改auto_prepend_file配置
auto_prepend_file = /opt/inject.php

或者修改php-fpm配置

php_admin_value[auto_prepend_file] = /opt/inject.php

或者修改nginx配置

fastcgi_param PHP_VALUE "auto_prepend_file=/opt/inject.php";

更好的分析工具

xhprof.io还是xhpgui,注入代码后我们还需要实现保存xhprof数据以及展示数据的UI,听起来似乎又是一大堆工作,有现成的轮子可以用吗?经过搜索和比较,貌似比较好的选择有xhprof.io以及xhpgui

xhprof.io配置

git clone https://github.com/gajus/xhprof.io
cd xhprof.io/
composer install
cp xhprof/includes/config.inc.sample.php xhprof/includes/config.inc.php

修改xhprof/includes/config.inc.php

//在MySQL中建立xhprof.io数据库,假设数据库名为xhprof,然后导入xhprof/setup/database.sql
//配置文件config.inc.php中需要调整 'url_base' => 'http://x.test.com:8081/xhprof.io/', 这是xhprof.io界面所在路径
'pdo' => new PDO('mysql:dbname=xhprof;host=localhost;charset=utf8', 'root', 'password'), 根据MySQL实际情况调整配置
//enable 这是一个匿名函数,当匿名函数返回true时启用xhprof数据收集

测试地址:https://dev.anuary.com/8d50658e-f8e0-5832-9e82-6b9e8aa940ac/?xhprof[template]=request&xhprof[query][request_id]=108151

aaarticlea/png;base64,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" alt="" />

五、框架测试

1、ThinkPHP原生框架

调用关系图

2、加载程序的TP框架

调用关系图

3、CI原生框架

调用关系图

4、YII原生框架

调用关系图

具体哪个函数很慢,都是可以看的很清楚

参考文章

http://pecl.php.net/package/xhprof
http://mirror.facebook.net/facebook/xhprof/doc.html
https://github.com/facebook/xhprof

												

php调试利器Xhprof的安装与使用的更多相关文章

  1. Laravel 调试器 Debugbar 和数据库导出利器 DbExporter 扩展安装及注意事项

    一.Debugbar安装 参考:Laravel 调试利器 —— Laravel Debugbar 扩展包安装及使用教程 的“2.安装”部分 二.DbExporter安装 参考:Laravel 扩展推荐 ...

  2. 手机H5 web调试利器——WEINRE (WEb INspector REmote)

    手机H5 web调试利器--WEINRE (WEb INspector REmote) 调试移动端页面,优先选择使用chrome浏览器调试,如果是hybrid形式的页面,可以使用chrome提供的ch ...

  3. Javascript 调试利器 Firebug使用详解

    Javascript 调试利器 Firebug使用详解 有时候,为了更清楚方便的查看输出信息,我们可能需要将一些调试信息进行分组输出,那么可以使用console.group来对信息进行分组,在组信息输 ...

  4. 前端调试利器——BrowserSync

    此处记录一下踩过的坑 之前看的这个地址:http://www.browsersync.cn/ 也就是 BrowserSync的官网上面关于代理服务器的例子不管怎么试都不行 请看下例子 browser- ...

  5. 【远程文件浏览器】Unity+Lua开发调试利器

    Remote File Explorer是一个跨平台的远程文件浏览器,用户通过Unity Editor就能操作运行在手机上的游戏或是应用的的目录文件.比如当项目打包运行到设备上时,可通过Remote ...

  6. Reveal1.5破解,iOS_UI调试利器Reveal最新版本破解方法

    Reveal1.0.7破解 1.官网下载最新版Reveal,拖动应用程序中,运行一次2.下载16进制编辑器"0xED" for mac(http://dl.vmall.com/c0 ...

  7. Windows GUI代码与Windows消息问题调试利器

    Windows GUI代码与Windows消息问题调试利器 记得很久前有这么一种说法: 人类区别于动物的标准就是工具的使用.同样在软件开发这个行业里面,对于工具的使用也是高手和入门级选手的主要区别,高 ...

  8. php性能分析工具 - xhprof的安装使用

    一.前言 有用的东西还是记录下来吧,也方便以后的查询:这次记录一下xhprof的安装使用: xhprof是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低, ...

  9. linux-c/c++调试利器gdb、ddd小试

    linux-c/c++调试利器gdb.ddd小试 原文链接: http://deepfuture.iteye.com/blog/749148 博客分类: C++/C/lisp CC++C#LinuxU ...

随机推荐

  1. .NET:CLR via C#The Managed Heap and Garbage Collection

    Allocating Resources from the Managed Heap The CLR requires that all objects be allocated from the m ...

  2. python笔记32-ddt框架优化(生成html报告注释内容传变量)

    前言 至于什么是ddt这个可以参考我之前写的博客内容,使用ddt框架的时候,有个问题困扰我很久了,一直没得到解决(也有很大小伙伴问过我,没解决抱歉了!) 这个问题就是:如何使用ddt框架时,生成的ht ...

  3. dwz tabs table实现翻页及各tabs查询

    效果如图:

  4. iOS动画相关(持续更新)

    1.When my application is entering background, because the user push the home button, the animations ...

  5. java.lang.UnsatisfiedLinkError:no dll in java.library.path终极解决之道

     Java调用Dll时,会出现no dll in java.library.path异常,在Java Project中不常见,因为只要将Dll拷贝到system32目录下即可:         但若是 ...

  6. struts2点滴记录

    1.s:textfield 赋值方法 <s:textfield name="Tname" value="%{#session.Teacher.name}" ...

  7. 如何让Oracle表及字段显示为区分大小写(转)

    http://www.itpub.net/thread-1703955-1-1.html

  8. [转]VS2010快捷键

    VS2010的快捷键,后附VS2008的快捷键 Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 ...

  9. [leetcode]Insertion Sort List @ Python

    原题地址:http://oj.leetcode.com/problems/insertion-sort-list/ 题意:对链表进行插入排序. 解题思路:首先来对插入排序有一个直观的认识,来自维基百科 ...

  10. Visual Studio 调试方法

    1:命令窗口 CTRL + D + I,可以在立即窗口中写一些临时的代码 2:编辑并继续 选中下面的选项,可以让你在调试暂停中,修改代码,而不用重新启动, 3:执行 单步执行:F10 跳进方法:F11 ...