tideways

it2022-05-05  122

tideways_xhprof 怎么装

 

进入https://github.com/shenzhe/php-xhprof-extension/releases 选最新的稳定版本下载。

 

//我下载的5.0版本

wget https://github.com/shenzhe/php-xhprof-extension/archive/v5.0-beta3.tar.gz

//重命下名,git下的文件都只个版本号,重搞个名字好看点

mv v5.0-beta3.tar.gz xhprof-5.0-beta3.tar.gz

tar -zxvf xhprof-5.0-beta3.tar.gz

//进入解压的文件夹

cd php-xhprof-extension-5.0-beta3

phpize

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

make && make install

 

最后显示这样就表示安装成功了

编辑php.ini文件,加上一行  extension= tideways_xhprof

然后

php -m

查看tideways_xhprof是否安装成功

 

tideways_xhprof 怎么用

编辑入口index.php文件,

在文件最开始,当然要在<?php 这个标签后面哈,输入如下代码:

tideways_xhprof_enable(TIDEWAYS_XHPROF_FLAGS_MEMORY | TIDEWAYS_XHPROF_FLAGS_CPU);

 

然后在文件最末尾,当然要在 ?> 这个标签之前(如果有的话),输入如下代码:

file_put_contents('/home/www/html/xhprof_data/'. date('YmdHis') . '.msg-api.xhprof', serialize(tideways_xhprof_disable()));

(文件位置可自定义哟)

 

浏览器输入接口地址执行,在上面的目录下就会多出一个文件来。呵呵注意,我这里是按秒分的文件,所以不要执行太快哦,不然后面的文件会覆盖前面的文件的。

 

 

tideways_xhprof 怎么看

 

直接看文件是不行的,火眼金睛也看不明白,还是用xhprof来看吧

git clone https://github.com/phacility/xhprof

然后配置nginx :

将root指向xhprof_html,

fast_cgi那里用了$document_root变量的,在那个域里面也要指定个 root 到xhprof_html

最后配置个hosts域名(例如 v.xhprof.com),servername 就可以填个域名v.xhprof.com

nginx -s reload

重载下nginx配置。

 

然后就可以愉快的看表格化的性能数据了,哈哈,兄嘚别高兴得太早。xhprof没有php7的版本,如果你的环境是php7的话,还要在代码上加点调料。来来来,一步步搞。

第一个:入口index.php文件

增加一行,

//就是你上面file_put_contents的那个目录

$dir = "/home/www/html/xhprof_data/";

修改一行,

$xhprof_runs_impl = new XHProfRuns_Default();

修改为:

$xhprof_runs_impl = new XHProfRuns_Default($dir);

 

第二个:xhprof_lib/utils/xhprof_lib.php文件:

注释两行,

//xhprof_error("Error in Raw Data: parent & child are both: $parent");

//return;

 

第三个:xhprof_lib/utils/xhprof_runs.php文件

增加函数,

//“<?php” 标签的下面增加一个function,不要加到类或接口里面哦:

function yourFunction($a, $b) {

      return filemtime($b) - filemtime($a);

 }

修改一行,

usort($files, create_function('$a,$b', 'return filemtime($b) - filemtime($a);'));

改为:

usort($files, 'yourFunction');

 

 

现在就可以愉快的玩耍啦,浏览器输入你配的hosts域名,我的是 v.xhprof.com,就会显示如下界面:

 

要先跑你的laravel项目接口哦,不然是没有文件显示的哦。

点击文件就可以看到下面的信息啦。时间单位是微秒哈。百分比越大表示越耗时。好了,文章最后有表头字段的各个含义,慢慢看吧,看那些让你深恶痛绝的性能杀手在哪里。

 

 

表头字段含义:

Function Name:方法名称。

Calls:方法被调用的次数。

Calls%:方法调用次数所占百分比。

Incl.Wall Time(microsec):方法执行花费的时间,包括子方法。

IWall%:方法执行花费的时间百分比。

Excl. Wall Time(microsec):方法本身执行花费的时间,不包括子方法。

EWall%:方法本身执行花费的时间百分比。

Incl. CPU(microsecs):方法执行花费的CPU时间,包括子方法。

ICpu%:方法执行花费的CPU时间百分比。

Excl. CPU(microsec):方法本身执行花费的CPU时间,不包括子方法。

ECPU%:方法本身执行花费的CPU时间百分比。

Incl.MemUse(bytes):方法执行占用的内存,包括子方法。

IMemUse%:方法执行占用的内存百分比。

Excl.MemUse(bytes):方法本身执行占用的内存,不包括子方法。

EMemUse%:方法本身执行占用的内存百分比。

Incl.PeakMemUse(bytes):Incl.MemUse峰值。

IPeakMemUse%:Incl.MemUse峰值百分比。

Excl.PeakMemUse(bytes):Excl.MemUse峰值。

EPeakMemUse%:Excl.MemUse峰值百分比。

 


最新回复(0)