​phpize的安装  

一直想装VLD却一直没装上,因为需要用到phpize,但这个工具大部分机子都没有装,上网搜了一下大部分都是讲phpize的应用没有讲怎么安装。

今天终于搜到了,不过是要在linux机器上,有yum命令就行。phpize是属于php-devel的内容,所以只要运行

yum install php-devel就行。

来源: <http://blog.163.com/loveyangmao@126/blog/static/696741432010626140157/>


xhprof安装和使用方法

不对xhprof做介绍,我相信能搜到这篇文章的你一定已经知道了xhprof是干什么的。

安装很简单,先去github上把源代码拉下来,地址在这儿:

git@github.com:facebook/xhprof.git

xhprof文件夹下面应该有这几个文件夹:examples, extension, xhprof_html, xhprof_lib,分别是例子,插件,文档和统计页面,库。另外,在xhprof_html里面有个docs文件夹,里面的index.html是很好的关于xhprof的文档,我就是看的这个。

然后按照以下步骤去做:

cd xhprof/extension
which php-config  #记录下php-config的路径,接下来要用。
phpize
./configure --with-php-config=/usr/bin/php-config #此处的地址就是上面你记录下来php-config的地址
make
sudo make install

编译完成安装好之后,还要去修改一下php.ini,在php.ini的最后添加这样一些内容(注意目录权限)

[xhprof]
extension=xhprof.so
;下面的这个地址是用来保存测量记录的目录,在页面输出测量得到的数据的时候,它会自动到这儿来找输出的文件。
xhprof.output_dir=/tmp

然后重启apache使得php.ini生效

sudo apachectl restart

这时候就xhprof就算是装好了。使用起来很简单,在你需要测试的代码的首尾各添加xhprof_enable()和xhprof_disable()就好了。举个例子:

#!/usr/bin/php

xhprof_enable();
foo();

$data = xhprof_disable();
var_dump($data); //此时$data里面保存的数据就是foo()这个函数的运行开销等的数据。function foo(){phpinfo();
}

如果需要在页面显示,那也很简单,xhprof下面有一个xhprof_html的文件夹,你需要让这个文件夹能够让你的浏览器通过http服务访问到。我就放在/var/www里面了,这样的话我访问它的路径就是:

http://localhost/xhprof_html/index.php

当然,对应的测试页面也需要修改:

#!/usr/bin/php

xhprof_enable(XHPROF_FLAGS_CPU+XHPROF_FLAGS_MEMORY);//加上这个参数可以使得xhprof显示cpu和内存相关的数据。

foo();//把要测量的函数用xhprof_enable和xhprof_disable包围起来。$data = xhprof_disable();//得到统计数据之后,以下的工作就是为页面显示做准备。
$xhprof_root = "/var/www/xhprof";//这里填写的就是你的xhprof的路径include_once $xhprof_root."/xhprof_lib/utils/xhprof_lib.php";
include_once $xhprof_root."/xhprof_lib/utils/xhprof_runs.php";$xhprof_runs = new XHprofRuns_Default();
$run_id = $xhprof_runs->save_run($data, "test");//第二个参数在接下来的地方作为命名空间一样的概念来使用/**************************访问<xhprof-ui-address>/index.php?run=$run_id&source=test就能够看到一个统计列表了。1. <xhprof-ui-address>其实就是http://localhost/xhprof_html2. 你会在/tmp里面找到一个类似这样的文件:50f7ed6689205.test.xhprof,第一个部分就是run_id,当然,程序里面的$run_id跟这个是一样的。第二个部分的test就是你在save_run里面的第二个参数,第三个部分就是文件后缀不用去管3. 例子中,要看到统计列表需要访问的地址就是http://localhost/xhpro_html/index.php?run=50f7ed6689205&source=test
**************************/function foo(){phpinfo();
}
来源: <http://www.cnblogs.com/casatwy/archive/2013/01/17/2865241.html>


一天一点进步

xhprof安装&&使用

2010年的时候有做过相关的东西,为ECOS框架写了一个相关的APP应用,前段时候要用xhprof来测试一下ECAE上的php的运行效率又重新要安装xhprof

本日志记录下相关的过程,以便以后再次使用到

编译安装

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

配置 php.ini

在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

注:如果是64位系统需要将xhprof.so文件拷贝到相关的lib64的目录下

将代码加入到要测试的php当中

 1 <?pho
 2 // cpu:XHPROF_FLAGS_CPU 内存:XHPROF_FLAGS_MEMORY
 3 // 如果两个一起:XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY
 4 xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
 5
 6 // 要测试的php代码
 7
 8
 9 $data = xhprof_disable();   //返回运行数据
10
11 // xhprof_lib在下载的包里存在这个目录,记得将目录包含到运行的php代码中
12 include_once "xhprof_lib/utils/xhprof_lib.php";
13 include_once "xhprof_lib/utils/xhprof_runs.php";
14
15 $objXhprofRun = new XHProfRuns_Default();
16
17 // 第一个参数j是xhprof_disable()函数返回的运行信息
18 // 第二个参数是自定义的命名空间字符串(任意字符串),
19 // 返回运行ID,用这个ID查看相关的运行结果
20 $run_id = $objXhprofRun->save_run($data, "xhprof");
21 var_dump($run_id);

查看运行结果

将xhprof_lib&&xhprof_html相关目录copy到可以访问到的地址
访问 xxx/xhprof_html/index.php?run=$run_id&source=bluefrog 就可经看到你的php代码运行的相关情况下面是一些参数说明
Inclusive Time                 包括子函数所有执行时间。
Exclusive Time/Self Time  函数执行本身花费的时间,不包括子树执行时间。
Wall Time                        花去了的时间或挂钟时间。
CPU Time                        用户耗的时间+内核耗的时间
Inclusive CPU                  包括子函数一起所占用的CPU
Exclusive CPU                  函数自身所占用的CPU

注: 需要使用ctype这个扩展

来源: <http://www.cnblogs.com/bluefrog/archive/2012/03/01/2374922.html>


facebook工具xhprof的安装与使用-分析php执行性能

下载源码包的网址
 
http://pecl.php.net/package/xhprof

上面说了,每个版本适用的php版本。

规划(预先搞清楚思路)

一、这是一个php扩展的形式。我们安装gd2,curl都是php的扩展形式。只不过有的时候编译的时候就安装进去了。
像操作mysql数据库,也是一个mysql.so这样的扩展,安装了扩展,就能调用mysql_query()这些函数。
要操作oracle数据库,也有对应的oracle扩展加到php引擎中去。

现在要把xhprof扩展加到php中去。

很久没使用phpize安装扩展了。我自己忘得差不多了。于是重新去自己的博客找到以前写的文章复习一下。

http://www.cnblogs.com/wangtao_20/archive/2011/03/16/1986508.html

ps:我也在思考,这个东西怎么这么容易忘记。我只知道他的作用。但是完全不记得他的操作步骤。要注意的细节。

看我得想办法以通俗的方式来理解记住它。

二、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 运行数据的默认目录
xhprof.output_dir=/tmp/xhprof

三、有了这个扩展后,就能在自己的php代码中调用这个扩展内置的函数来做性能监控了,像下面这样子

xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

................这里是要被监控的代码块

$data = xhprof_disable();

include_once "xhprof_lib/utils/xhprof_lib.php";  
include_once "xhprof_lib/utils/xhprof_runs.php";  
$objXhprofRun = new XHProfRuns_Default();//数据会保存在php.ini中xhprof.output_dir设置的目录去中 
$run_id = $objXhprofRun->save_run($data, "test");

=====================================================

几个扩展函数如下

步骤实施

1、先找到我服务器上php的安装目录,phpize一般都是在安装目录中,如下:

/usr/local/php/bin/phpize

2、找出php-config在哪个目录(下面会用到),我的服务器在:

/usr/local/php/bin/php-config

目的:在下面进行编译的时候,会用到这个文件

./configure --with-php-config=/usr/local/php/bin/php-config

3、找到我服务器上php扩展在哪个目录,不确定的话,我觉得去php.ini中也能看到,如下

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/" 这个路径感觉有点长。不用去改了php.ini中的设置,目前我觉得没必要(商业与时间成本,这部分还不是制约因素)。按原来的继续放扩展。

现在知道扩展目录为:/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

也就是说,我要把xhprof的源码包解压到这个目录下去(解压后会生成一个新的文件夹)。

那我就要去这个目录下运行phpize(这样方便在这个目录下面生成configure文件),

phpize的特点:在a目录下运行phpize,就会在a目录下生成configure。

得到上面路径,shell命令实践

cd  /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/

解压下载到的xhprof压缩包(我不是通过wget下载的,我是把这个压缩直接通过ftp上传到no-debug-non-zts-20060613目录中去)。

tar zxf xhprof-0.9.3.tgz               #解压后,里面有个extension文件夹,进入里面去(目的是进入里面去运行phpize),解压后的目录结构如下

cd xhprof-0.9.3/extension/            #切换到这个扩展的源码目录去

在这个目录下面运行phpize,就会在extension目录下生成一个configure文件(这是phpize的机制)

/usr/local/php/bin/phpize
  
去看一下扩展目录,会发现在extension目录生成了一个configure文件。运行它

======================================

./configure --with-php-config=/usr/local/php/bin/php-config #用到了前面找到的php-config文件。

make && make install

make test
======================================

运行成功后,会提示生成的xhprof.so文件在哪个位置,提示信息:

Libraries have been installed in:
   /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xhprof-0.9.3/extension/modules

这个目录下已经存在一个文件:
/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xhprof.so

刚才生成了xhprof.so这个模块文件,现在要在php.ini中加载刚才生成xhprof.so模块才能生效:

[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

平滑重新加载php.ini文件:/usr/local/php/sbin/php-fpm reload
提示:

Reload service php-fpm  done

说明成功。

现在去phpinfo中看xhprof扩展是否加载成功了

安装作图工具(选填,可以后续再安装)

yum install -y graphviz

================================================

工具的使用实践

================================================

index.php中的代码:

<?php
error_reporting(-1);

xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
 
$begin_time = microtime_float();

///统计执行速度代码
$end_time = microtime_float();

$exec_time  = $end_time-$begin_time;

//@save_stat($exec_time);

for($i=0;$i<10;$i++){

for($j=0;$j<10;$j++){

}

}

$data = xhprof_disable();

include_once "xhprof_lib/utils/xhprof_lib.php";//从源码包中拷贝xhprof_lib这个文件夹过来直接可以调用
include_once "xhprof_lib/utils/xhprof_runs.php";  
$objXhprofRun = new XHProfRuns_Default();//数据会保存在php.ini中xhprof.output_dir设置的目录去中 
$run_id = $objXhprofRun->save_run($data, "test");
//第二个参数是定义文件名称。名称如果为"xhprof",则在xhprof.output_dir设置的目录生成的文件:522ab85f40229.xhprof.xhprof。
//格式为:"id标识.组名称.xhprof",id标识就是$run_id得到的结果。

//id标识是每次运行的时候就生成一个新的标识,也就是生成一个新的文件,记录每次运行的数据

var_dump($run_id);

echo "http://www.xxxx.com/xhprof_html/index.php?run={$run_id}&source=test\n";//source的值必须是save_run中指定的名称。这个其实就是根据编号和名称才能定位到对应的文件"522ab85f40229.xhprof.xhprof"

//将这个地址输出来,是为了直接可以去查看分析结果。

function save_stat($time)
{
    static $call_count=1;
    $call_limit = 10;
    if(!$time) return ;
        $date = date("Y-m-d");//暂时按照天来生成文件。方便查阅
    $exec_stat_file = './exec_stat'.DIRECTORY_SEPARATOR."exec_stat_file-".$date.".txt";
    $fp = fopen($exec_stat_file,'ab');
    if(flock($fp,LOCK_EX))
    {
        $s = 'access:'.date("Y-m-d H:i:s").',execute time:'.$time.'s,request_url:http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."||".PHP_EOL;
        fwrite($fp,$s);
        flock($fp,LOCK_UN);
    }else{
        usleep(1000);
        if($call_count<$call_limit)
        {
            $call_count++;
            save_stat($time);
        }
    }

@fcolse($fp);
    //var_dump($fp);

}
function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}
?>

加粗的黑体,就是分析用到的代码。

其中用到了源码包中的xhprof_lib中的代码,代码中"XHProfRuns_Default"这个类就是里面的。

生成了分析结果后,现在可以去使用源码包中提供的web版的工具查看了。

xhprof_html这个文件夹随便放到哪里,只要放到能够通过web访问的目录下即可,不过这个里面会用到xhprof_lib中的类,所以还是一起复制过去,跟源码包中保持一样的结构才好。xhprof_html与xhprof_lib要保持平行

我这里,这个工具的访问方式是:http://www.xxxx.com/xhprof_html/index.php?run=xxx&source=xxx\n

source的值必须是save_run中指定的名称。这个其实就是根据编号和名称才能定位到对应的文件"522ab85f40229.xhprof.xhprof"

访问看到的结果如下

图中,红色的表示最耗费性能的,黄色的其次。

只了解这么多了。具体的分析结果怎么看,在文件夹xhprof_html中有个docs目录,里面是说明文档。说了一些专用术语的定义

注意点:在php.ini中xhprof.output_dir设置的目录,要自己手动去创建。这个工具不会自动去创建。没有该文件夹。就不会生成。另外,在linux下还要保证权限设置好,我设置的属主是www就可以用了。

单位:1s(秒)=1000ms(毫秒)

官方解释

  1. Inclusive Time (or Subtree Time): Includes time spent in the function as well as in descendant functions called from a given function.
  2. Exclusive Time/Self Time: Measures time spent in the function itself. Does not include time in descendant functions.
  3. Wall Time: a.k.a. Elapsed time or wall clock time.
  4. CPU Time: CPU time in user space + CPU time in kernel space

Exclusive Time表示函数本身的执行时间。这个时间并不包含里面调用其他函数的耗时(其实就是去掉里面其他函数的耗时,因为函数里面调用到的函数也会进行单独统计)。

Inclusive Time则是包括了里面调用的子函数时间(descendant functions)

所以,我的理解是Exclusive Time<=Inclusive Time

来源: <http://www.cnblogs.com/wangtao_20/archive/2013/09/13/3320497.html>

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/wxb0328/p/4397187.html

PHP性能分析工具:xhprof相关推荐

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

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

  2. php性能分析工具XHProf安装配置使用教程(linux精华版)

    XHProf是一个分层PHP性能分析工具.它报告函数级别的请求次数和各种指标,包括阻塞时间,CPU时间和内存使用情况.一个函数的开销,可细分成调用者和被调用者的开销,XHProf数据收集阶段,它记录调 ...

  3. php轻量级的性能分析工具xhprof的安装使用

    之前一直使用基于Xdebug进行PHP的性能分析,对于本地开发环境来说是够用了,但如果是线上环境的话,xdebug消耗较大,配置也不够灵活,因此线上环境建议使用xhprof进行PHP性能追踪及分析. ...

  4. php xhprof extension,PHP性能分析工具-xhprof扩展安装

    简述:XHProf是一个分层PHP性能分析工具.它报告函数级别的请求次数和各种指标,包括阻塞时间,CPU时间和内存使用情况.一个函数的开 销,可细分成调用者和被调用者的开销,XHProf数据收集阶段, ...

  5. php接口耗时分析工具,php性能分析工具xhprof分析

    facebook,做为世界上最大的php应用网站,为php贡献出了hhvm xhprof等优秀开源工具,其中xhprof已成为很多phper调试php性能瓶颈的利器.本文作者将从xhprof源码出发, ...

  6. windows下安装php性能分析工具XHProf(windows版本)

    一.安装扩展 下载XHProf扩展:http://dev.freshsite.pl/php-extensions/xhprof.html 放入扩展文件:下载后解压出.dll文件,拷贝它到php的ext ...

  7. 分层PHP性能分析工具--xhprof

    2019独角兽企业重金招聘Python工程师标准>>> xhprof的安装是很简单,记录下其在php函数中的使用代码别让自己给忘记了: public static function ...

  8. php性能分析工具 xhprof,php 性能分析工具 xhprof

    php 安装 xhprof 扩展 (兼容php5.7)git clone git@github.com:longxinH/xhprof.git cd xhprof/extension/ /usr/lo ...

  9. PHP性能分析工具xhprof 参数简介详解

    Function Name:方法名称. Calls:方法被调用的次数. Calls%:方法调用次数在同级方法总数调用次数中所占的百分比. Incl.Wall Time(microsec):方法执行花费 ...

  10. PHP性能追踪及分析工具xhprof的安装与使用

    PHP性能追踪及分析工具xhprof的安装与使用 对于本地开发环境来说,进行性能分析xdebug是够用了,但如果是线上环境的话,xdebug消耗较大,配置也不够灵活,因此线上环境建议使用xhprof进 ...

最新文章

  1. PTA数据结构与算法题目集(中文)7-18
  2. 32位系统 和 64位系统 C 程序中 为什么 指针的内存大小的不一样
  3. $Django 中间件 csrf
  4. 将Sublime Text 2搭建成一个好用的IDE
  5. HTML和CSS初级前端面试题汇总(持续补充)
  6. heic怎么查看,如何打开heic
  7. Nhibernate教程2(3)
  8. Opencv EmguCv 基本识别步骤
  9. java 线程数_在虚拟机中是什么限制java线程数量?这方面涉及哪些调优?
  10. 使用Tensorflow Lite创建一个Android AI应用
  11. 关于TCP三次握手过程
  12. 【手把手带你入门深度学习之150行代码的汉字识别系统】学习笔记 ·001 用OpenCV制作数据集
  13. 相机无线传输到服务器,A7R4心得 篇一:SONY相机无线传输备份照片到群晖NAS介绍和设置教程 支持A9、A7R3和A7R4微单...
  14. cocos2dx box2d使用(一)
  15. Cocos Creator如何制作3D微信小游戏教程
  16. elasticsearch collapse
  17. 安卓电视/平板玩街机游戏
  18. 手把手教你搭建SpringCloud项目(二)生产者与消费者
  19. java 远程视频监控系统_基于android的远程视频监控系统 附完整源码
  20. 我真的不懂路由器和交换机的区别

热门文章

  1. 挑战SQL经典题(一)
  2. 计算机系统日期无法保存,电脑维修:更换电子后电脑系统时间依然不准确且主板不能保存时间...
  3. 科技爱好者周刊(第 189 期):下一个内卷的行业
  4. 网站被劫持的方式,和检测方法、网站被劫持、检测方法有哪些
  5. 阿里巴巴python开发面试题_2019阿里巴巴面试题集锦(有答案哦),收藏!
  6. OPPO R7Plusm(全网通)root、刷入twrp recovery、卡刷刷入CM系统教程合集_ recovery.img文件下载 联想A7600-m线刷刷机教程 手机卡在双4G双百兆无法开
  7. oracle svip地址,木子李QQ8.9 显IP地址SVIP完整版
  8. 国务院公布《关键信息基础设施安全保护条例》
  9. 棋牌麻将 - 常用胡牌规则解释及汇总
  10. Python分析00-90后的微信昵称,发现如下规律!