设为首页 收藏本站
查看: 592|回复: 0

[经验分享] php代码性能分析工具:XHProf

[复制链接]

尚未签到

发表于 2017-3-31 09:34:41 | 显示全部楼层 |阅读模式
  http://www.ooso.net/archives/522

http://www.cnblogs.com/sunvince/archive/2011/04/07/2037616.html

http://hi.baidu.com/thinkinginlamp/blog/item/f4bd08fa1a03ba9e59ee90fd.html
  XHProf是Facebook开源的一个PHP性能检测程序,里面有很多直观的数据来说明问题,比如调用次数、执行时间、内存使用、CPU占用等
  编译安装


获取源代码包

root@sourcjoy>
wget http://pecl.php.net/get/xhprof-0.9.2.tgz

解压


root@sourcjoy>
tar zxf xhprof-0.9.2.tgz
root@sourcjoy>
cd xhprof-0.9.2
复制web访问目录到web应用目录

root@sourcjoy>
cp -r xhprof_html xhprof_lib /var/www/html/
  #复制xhprof的展示页面目录和库目录到web目录下,可以为xhprof_html建个虚拟目录来访问,也可以把这两个目录拷贝到应用的根目录下。

root@sourcjoy>
cd extension/
编译插件


root@sourcjoy>
/usr/local/webserver/php/bin/phpize

root@sourcjoy>
./configure --with-php-config=/usr/local/webserver/php/bin/php-config

root@sourcjoy>
make

root@sourcjoy>
make install

  

注意:这里安装的时候可能会出现访问php.ini没权限的问题,请把php.ini的权限改成666:

chmod 666 /usr/local/webserver/php/etc/php.ini

  配置 php.ini 文件

root@sourcjoy>
vi /usr/local/webserver/php/etc/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=/var/logs/xhprof

  重启web服务器
  为了更加清晰显示程序执行、调用结构,安装Graphviz,如果安装了Graphviz,XHProf会用比较牛的图形方式展现统计数据。
获取源码包

root@sourcjoy>
wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz

root@sourcjoy>
tar zxf graphviz-2.24.0.tar.gz
root@sourcjoy>
cd graphviz-2.24.0
编译安装

root@sourcjoy>
./configure
root@sourcjoy>
make
root@sourcjoy>
make install

  接下来在要统计的php应用中加入以下语句:
xhprof_enable();
 //统计的代码部
分之前加,如果要显示CPU占用
可以加入XHPROF_FLAGS_CPU参数,内存是XHPROF_FLAGS_MEMORY,如果两个一起:XHPROF_FLAGS_CPU +
XHPROF_FLAGS_MEMORY,如:xhprof_enable(XHPROF_FLAGS_CPU +
XHPROF_FLAGS_MEMORY);

  xhprof_disable();
//统计的代码部分之后加

  这样xhprof就可以统计当前页面的函数性能情况了。xhprof会把每次访问加入统计代码的页面的性能统计结果在指定目录下生成一个文件,文件名命名方式为:本次访问的系统ID.命名空间,每次刷新页面都会重新生成一个文件,每个的系统ID都不同。
  然后通过xhprof_html目录的http访问url来查看结果。如:http://app/xhprof_html/?run=运行id&source=命名空间(其中运行ID和命名空间可以根据xhprof生成的文件名来确定)

xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
//require_once ($yii);
//Yii::createWebApplication($config)->run();
$xhprofData = xhprof_disable();
Yii::import('application.components.monitor.xhprof.XhprofLib');
Yii::import('application.components.monitor.xhprof.XHProfRunsDefault');
$xhprofRuns = new XHProfRunsDefault();
$runId = $xhprofRuns->saveRun($xhprofData, 'test');
   

以yii为例子访问方式如下:
  http://test/index.php?r=xhprof/default/index

http://test/xhprof_html/?run=4f263128d1bf6&source=test&all=1

(4f263128d1bf6是随机生成的文件名)


说明:
1. Inclusive Time :包括子函数所有执行时间。

2. Exclusive Time/Self Time:函数执行本身花费的时间,不包括子树执行时间。



3. Wall Time:花去了的时间或挂钟时间。

4. CPU Time:用户耗的时间+内核耗的时间

5.Inclusive CPU:包括子函数一起所占用的CPU

6.Exclusive CPU:函数自身所占用的CPU
  上图更直观些:
  
DSC0000.jpg
  
DSC0001.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-357953-1-1.html 上篇帖子: windwos下安装php的memcache扩展 下篇帖子: php代码性能分析工具:XHProf
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表