https://www.cnblogs.com/casatwy/archive/2013/01/17/2865241.html

XHProf是facebook 开发的一个测试php性能的扩展,本文记录了在PHP应用中使用XHProf对PHP进行性能优化,查找性能瓶颈的方法。

不对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($xhprof_data, "test");//第二个参数在接下来的地方作为命名空间一样的概念来使用 /**************************
访问<xhprof-ui-address>/index.php?run=$run_id&source=test就能够看到一个统计列表了。 1. <xhprof-ui-address>其实就是http://localhost/xhprof_html 2. 你会在/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();
}

  

好了,xhprof的安装和使用的介绍就到此为止了。

(EOF)

作者:casatwy 出处:http://www.cnblogs.com/casatwy 欢迎转载,也请保留这段声明。谢谢!

php:使用XHProf查找PHP性能瓶颈的更多相关文章

  1. 使用XHProf查找PHP性能瓶颈

    XHProf是facebook 开发的一个测试php性能的扩展,本文记录了在PHP应用中使用XHProf对PHP进行性能优化,查找性能瓶颈的方法. 一.安装Xhprof扩展 //github上下载ht ...

  2. 使用XHProf分析PHP性能瓶颈(一)

    安装xhprof扩展 wget http://pecl.php.net/get/xhprof-0.9.4.tgz tar zxf xhprof-0.9.4.tgz cd xhprof-0.9.4/ex ...

  3. 使用XHProf分析PHP性能瓶颈(二)

    上一篇文章里,我们介绍了如何基于xhprof扩展来分析PHP性能,并记录到日志里,最后使用xhprof扩展自带的UI在web里展示出来.本篇文章将讲述2个知识点: 使用xhgui代替xhprof的默认 ...

  4. 安装XHProf分析PHP性能瓶颈(原创)

    废话不多说,直接上代码 ,手动滑稽.o(╯□╰)o   如果已解决您的问题,请在文章底部点击下关注,非常感谢. 下面是LINUX命令行 $ wget http://pecl.php.net/get/x ...

  5. xhprof扩展安装与使用

    目录 一.xhprof扩展安装步骤 二.xhprof的使用 总结 参考资料 一.xhprof扩展安装步骤 xhprof是PHP的一个扩展,最好也直接安装上graphviz图形绘制工具(用于xhprof ...

  6. Java研发岗位面试归类B(附答案)

    本文承接上文:Java研发岗位面试归类A(附答案): http://www.cnblogs.com/wp5719/p/5870243.html 答案自己网上找的,如有纰漏或错误,烦请指教. 七.数据库 ...

  7. 2016java技术岗面试题

    一.Java基础 1. String类为什么是final的. 2. HashMap的源码,实现原理,底层结构. 3. 说说你知道的几个Java集合类:list.set.queue.map实现类咯... ...

  8. 2015年Java开发岗位面试题归类

    一.Java基础 1. String类为什么是final的. 2. HashMap的源码,实现原理,底层结构. 3. 说说你知道的几个Java集合类:list.set.queue.map实现类咯... ...

  9. 高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化

    高性能Linux服务器 第10章    基于Linux服务器的性能分析与优化 作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行.但硬件问题.软件问题.网络环境等 ...

随机推荐

  1. 【转】Power System 中基于 VIOS 的虚拟以太网实现

    基于 VIOS 的虚拟以太网适配器的工作原理和配置实现 本文对 Power 系统中基于 VIOS 的虚拟以太网适配器(Virtual Ethernet Adapter)的工作原理.基本配置选项和配置步 ...

  2. Unix/Linux中Cron的用法

    cron是unix或者linux下用来定时任务的命令,大致的用法如下:   1.服务的启动和关闭 /sbin/service crond start   //启动服务 /sbin/service cr ...

  3. ThinkPHP的create方法的一系列操作

    1.数据操作状态 create方法的第二个参数可以指定数据的操作状态,默认是自动判断的(写入[Model:MODEL_INSERT或者1].更新[Model:MODEL_UPDATE或者2].也可以自 ...

  4. boost之内存池

    讲到内存池我们会想到对对象进行动态分配的过程new包含三个过程 1.使用operator new分配内存 2.使用placement new 初始化 3.返回内存地址. 分配内存可以分解成分配内存和获 ...

  5. zabbix-2.4.8-1添加MySQL状态监控

    1.安装zabbix-agentyum -y install zabbix-2.4.8-1.el6.x86_64.rpm zabbix-agent-2.4.8-1.el6.x86_64.rpm 安装以 ...

  6. corethink功能模块探索开发(三)让这个模块可见

    感觉corethink把thinkphp的思想复用到淋漓尽致. 1.把opencmf.php文件配置好了后台该模块的菜单就能在安装后自动读取(分析好父子关系,否则页面死循环,apache资源占用率10 ...

  7. PAT 天梯赛 L1-009. N个数求和 【模拟】

    题目链接 https://www.patest.cn/contests/gplt/L1-009 思路 每一步每一步 往上加,但是要考虑 溢出,所以用 LONG LONG 而且 每一步 都要约分 才能保 ...

  8. 版本控制系统Subversion

    系统提供撤销的功能对我们实际开发中特别重要.改动后撤销几乎也是我们每个人经常做的事情.再多人进行同一个项目的开发或者测试的时候,版本的唯一性(类似于临界区资源),也就是说A 和B 两个人协同工作的时候 ...

  9. 在树莓派上用Python控制LED

    所需材料 一个已经安装配置好了的树莓派 连接控制树莓派所用的其他必须设备 200Ω电阻 x 8 led x 8 面包板及连接线若干 电路连接 电路图 按照电路图所示,在面包板上进行连接. 编写程序 安 ...

  10. mysql case的语法

    测试表:team 第一种语法: CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_ ...