欢迎您光临澳门贵宾厅vip官网官方网站!

澳门贵宾厅网站平台php轻量级的性质分析工具xhprof的装置使用

时间:2020-01-11 06:40

一、前言

可行的事物照旧记录下来吧,也利于现在的询问;此番记录一下xhprof的装置使用;

xhprof是facebook开源出来的三个php轻量级的习性分析工具,跟Xdebug相仿,但品质费用更低,

还足以用在生养意况中,也足以由程序开 关来支配是不是开展profile。

二、安装

 wget  tar zxf xhprof-0.9.3.tgz cd xhprof-0.9.3/extension /usr/bin/phpize (php版本安装后生成的phpize文件,可根据phpinfo查看,所以php版本不同,生成的phpize也不同,此步骤主要生成configure文件) ./configure with-php-config=/usr/bin/php-config (php-config的路径,也是php安装后生成的文件) make sudo make install 

(会活动将扭转的扩张文件拷贝到增加目录中/usr/lib64/php/modulesState of Qatar

理之当然具体的php文件的目录,每一个人不尽相仿,可依照phpinfo查询

三、php.ini配置

根据phpinfo找到 extension_dir的目录

增加一下剧情:

extension=xhprof.soxhprof.output_dir=/tmp/xhprof //xhprof的分析日志

四、重启服务

 sudo /etc/init.d/http restart

翻看phpinfo是还是不是安装成功

五、使用办法

开头:xhprof_enable(); //开启监测 //xhprof_enable(XHPROF_FLAGS_NO_BUILTINS); 不记录内置的函数 //xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); 同时分析CPU和Mem的开销 //要测试的代码.........结尾:$xhprof_data = xhprof_disable(); //停止监测,返回运行数据$xhprof_root = '//'; //引入当初安装到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, "xhprof");echo 'a href="_html/index.phprun='.$run_id.'&source=xhprof" target="_blank"xhprof统计/a'; 

上面包车型客车代码应用了,给xhprof设置设想主机的法子。

把源码包中的 xhprof_html 和 xhprof_lib 文件夹拷贝到自组的设想目录中

cp -r xhprof_html xhprof_lib /xxx/xhprof/

运转后,总结点击重回的 xhprof总结 链接,就能够。

六、注意难题以致名词解释

在体现的总括页面中,点[View Full Callgraph]图形化展现;

点击后,可能提醒错误音信,试行以下命令就能够

 yum install -y graphviz yum install graphviz-gd

名词解释

Function Name 函数名 Calls 调用次数 Calls% 调用百分比 Incl. Wall Time (microsec) 调用的包括子函数所有花费时间 以微秒算(一百万分之一秒) IWall% 调用的包括子函数所有花费时间的百分比 Excl. Wall Time (microsec) 函数执行本身花费的时间,不包括子树执行时间,以微秒算(一百万分之一秒) EWall% 函数执行本身花费的时间的百分比,不包括子树执行时间 Incl. CPU(microsecs) 调用的包括子函数所有花费的cpu时间。减Incl. Wall Time即为等待cpu的时间 减Excl. 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的安装与简短用法

xhprof是Facebook开源的轻量级PHP品质剖析工具,Linux情形下得以经过pecl直接设置,举例在Ubuntu下仅需3行指令

pecl install xhprof-betaecho "extension=xhprof.so"  /etc/php5/fpm/conf.d/xhprof.iniservice php5-fpm restart

今后能够透过phpinfo(卡塔尔国检查扩大是或不是早就加载。

具体怎么着行使啊,xhprof项目中生龙活虎度提供了示范以致简易的UI,下载xhprof项目到web服务器,假使能够透过访谈,那么访问能够观望有的出口,而且提醒通过拜见_foo查看结果。接下来访谈_html/就能够观看已经保存的结果,列出了有着函数的调用以至所成本的年月。

剖判一下示范代码sample.php,关键部分只有2行:

//开启xhprof并开始记录xhprof_enable();//运行一些函数foo();//停止记录并取到结果$xhprof_data = xhprof_disable();

$xhprof_data中记录了程序单步运营进程中颇有的函数调用时间及CPU内部存款和储蓄器消耗等,具体记录哪些指标能够由此xhprof_enable的输入参数调控,之后的管理已经与xhprof扩大毫无干系,大约是编写制定了叁个存款和储蓄类XHProfRuns_Default,将$xhprof_data类别化并保存到有些目录,可以经过XHProfRuns_Default(__DIR__卡塔尔(قطر‎将结果输出到当前目录,要是不点名则会读取php.ini配置文件中的xhprof.output_dir,如故未有一点点名则会输出到/tmp。

xhprof_html/index.php将记录的结果收拾并可视化,默许的UI里列出了:funciton name : 函数名calls: 调用次数Incl. Wall Time (microsec卡塔尔国: 函数运转时刻IWall%:函数运维时刻占比Excl. WallTime(microsecState of Qatar:函数运转时刻EWall%:函数运营时刻

每意气风发项应该简单领悟,以体系自带的sample.php为例,示例中编辑了四个main(State of Qatar函数,main(卡塔尔国函数中调用foo(卡塔尔、bar(卡塔尔(قطر‎等一些子函数进行了一点字符管理。整个程序运转进度中,main(State of Qatar函数只运转了二回,何况由于main(卡塔尔(قطر‎函数中满含了颇有的逻辑,所以main(卡塔尔(قطر‎函数的IWall%占比为100%,然而由于main(State of Qatar函数的成效都以由子函数完结的,因而main(State of Qatar函数的EWall%唯有0.3%,而foo(State of Qatar函数完结了重大的劳作,EWall%有98.1%。由此在言之有序更加大型的主次时,往往要求依据这几项指标分别排序,从分歧的角度审视质量消耗。

在xhprof_html/index.php中仍是可以看出[View Full Callgraph]链接,点击后方可绘制出一张仔儒视化的性质解析图,即使点击后报错的话,只怕是枯槁重视graphviz,ubuntu可以通过apt安装apt-get install graphviz

更加好的注入格局

叩问了上边那个,其实就曾经得以将xhprof整合到其余大家本来就有的种类中去了。前段时间多数MVC框架都有唯生龙活虎的进口文件,只须求在入口文件的起来处注入xhprof的逻辑

//开启xhprofxhprof_enable(XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_CPU);//在程序结束后收集数据register_shutdown_function(function() { $xhprof_data = xhprof_disable(); //让数据收集程序在后台运行 if (function_exists('fastcgi_finish_request')) { fastcgi_finish_request(); } //保存xhprof数据 ...});

但是这么免不了要改革项指标源代码,其实php本人就提供了更加好的流入情势,举个例子将上述逻辑保存为/opt/inject.php,然后改良php fpm配置文件

vi /etc/php5/fpm/php.ini

修改auto_prepend_file配置

auto_prepend_file = /opt/inject.php

如此那般全部的php-fpm供给的php文件前都会活动注入/opt/inject.php文件

如若利用Nginx的话,还足以因而Nginx的配置文件设置,那样侵入性更加小,並且能够兑现基于站点的注入。

fastcgi_param PHP_VALUE "auto_prepend_file=/opt/inject.php";
上一篇:详整PHP中array_rand函数的行使办法_php才干_脚本之家
下一篇:详细解读PHP中接口的应用