xhprof扩充安装与行使

6、访问xhprof根目录

配置demo.com域名根目录为/home/wwwroot/default/,则可访问如下链接查看xhprof结果分析根目录http://demo.com/xhprof_data/,如下图所示:

图片 1

二、xhprof的使用

将转变的xhprof.so文件加到php.ini文件中,然后重启apache了

  名词解释

7、形象化的查看分析结果

设置图形绘制工具,后边的分析结果可以通过该工具以图纸呈现,更直观
举办安装命令:yum install graphviz

2、实际项目中该怎么样引入xhprof

请参见如下截图所示引入思路(在项目控制器基类构造方法和析构方法里做动作),思路技巧仅供就学参考,如下图:

图片 2
上面是本人在品种(以Yii2为框架)下引入xhprof代码一览

<?php
namespace backend\component;

use Yii;
use common\component\baseController;

class backendBaseController extends baseController
{
    public $layout = “/content”;
    public $enableCsrfValidation = false;

    public static $profiling = 0;

    public function init(){
        parent::init();
       
        self::$profiling = 1;// !(mt_rand() % 9);
        if  (self::$profiling) {
            xhprof_enable(XHPROF_FLAGS_CPU |
XHPROF_FLAGS_MEMORY);
        }
    }

    public function __destruct()
    {
        if(self::$profiling){
            $data = xhprof_disable();
            //$_SERVER[‘XHPROF_ROOT_PATH’] 该环境变量由第3步得来
            include_once $_SERVER[‘XHPROF_ROOT_PATH’] .
“/xhprof_lib/utils/xhprof_lib.php”;
            include_once $_SERVER[‘XHPROF_ROOT_PATH’] .
“/xhprof_lib/utils/xhprof_runs.php”;
            $x = new XHProfRuns_Default();

            //当前路由
            $routeName = Yii::$app->requestedRoute;
            //路由为空,则证实是首页
            if (empty($routeName)){
                $routeName = Yii::$app->defaultRoute;
            }

            //拼接xhprof分析结果保存文件名
            $xhprofFilename = str_replace(‘/’, ‘_’,
$routeName).’_’.date(‘Ymd_His’);
            $x->save_run($data, $xhprofFilename);
        }
    }
}

下载xhprof和graphviz

//开启xhprof
xhprof_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数据
  ...
});

一、xhprof增添安装步骤

xhprof是PHP的一个伸张,最好也一直设置上graphviz图形绘制工具(用于xhprof分析结果以直观的图纸格局显示),废话不多说,直奔宗旨。

一、xhprof增添安装步骤

xhprof是PHP的一个恢宏,最好也直接设置上graphviz图形绘制工具(用于xhprof分析结果以直观的图形方式显示),废话不多说,直奔焦点。

xhprof的话,直接去php官网就足以下载,为了方便可以戳一下
这里

  在突显的总括页面中,点[View Full
Callgraph]图形化彰显(最大的特性难题会用藏蓝色标注,其次是蓝色);

参考资料

1.施用XHProf查找PHP品质瓶颈

2.PHP品质分析工具
xhprof

3.xhprof安装了graphviz还报错failed to execute cmd ” dot
-Tpng”

6、访问xhprof根目录

布局demo.com域名根目录为/home/wwwroot/default/,则可访问如下链接查看xhprof结果分析根目录,如下图所示:

图片 3

近年来要做网站的属性相比,于是就找一款性能测试工作来娱乐,工具很多,但比较之前依然觉得xhprof的安装和运用相对来说简单点,数据解析也都还能,上面就说说它的设置和行使。。。

每一项应该简单精晓,以连串自带的sample.php为例,示例中编辑了一个main()函数,main()函数中调用foo()、bar()等部分子函数进行了几许字符处理。整个程序运行进度中,main()函数只运行了两次,并且鉴于main()函数中概括了具备的逻辑,所以main()函数的IWall%占比为100%,可是出于main()函数的意义都是由子函数达成的,因而main()函数的EWall%只有0.3%,而foo()函数落成了首要的工作,EWall%有98.1%。由此在分析更大型的次第时,往往须求基于这几项目标分别排序,从分裂的角度审视质量消耗。

二、xhprof的使用

1、安装

  • PHP5版本的装置

wget
tar -zxvf xhprof-0.9.4.tgz
cd xhprof-0.9.4
cd extension/
phpize
./configure
make
make install

  • PHP7版本的设置

unzip xhprof-php7.zip
cd xhprof-php7/extension/
phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make
make install

#开启,具体参数说明可以查看官方文档
xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);
#核心文件的执行
...
require 'index.php'
...
#关闭
$xhprof_data = xhprof_disable();
#这里的路径根据自己的站点来配置
$XHPROF_ROOT = realpath(dirname(__FILE__) .'/');
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");
#这里打印出本次测试的id,方便到报表列表页面【http://xxxx/xhprof_html/】去通过对应的id找到对应的结果
var_dump($run_id);

xhprof的装置与简短用法

4、将xhprof宗旨源代码复制到上述XHPROF_ROOT_PATH环境变量所指定的目录下

cp -r xhprof_lib /usr/local/php/include/xhprof/xhprof_lib

1、xhprof品质分析小demo

下边写的二种艺术完结阶乘的代码

<?php

xhprof_enable(XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);

$n = 5;

echo jc($n);
echo ‘<br>’;

echo jc($n);
echo ‘<br>’;

echo jc($n);
echo ‘<br>’;

function jc($n){
    if($n == 1){
        return 1;
    }
   
    return $n * jc($n-1);
}

function jc2($n){
    $m = 1;
    for($i=1; $i<=$n; $i++){
        $m = $m * $i;
    }
   
    return $m;
}

function jc3($n){
    $arr = [];
    $arr[1] = 1;
   
    for($i = 2; $i<=$n; $i++){
        $arr[$i] = $i * $arr[$i-1];
    }
   
    return $arr[$n];
}

$data = xhprof_disable();
//$_SERVER[‘XHPROF_ROOT_PATH’] 这就是第三步添加的那么些环境变量
include_once $_SERVER[‘XHPROF_ROOT_PATH’] .
“xhprof_lib/utils/xhprof_lib.php”;
include_once $_SERVER[‘XHPROF_ROOT_PATH’] .
“xhprof_lib/utils/xhprof_runs.php”;
$x = new XHProfRuns_Default();

//拼接文件名
$xhprofFilename = date(‘Ymd_His’);

//print_r($data);die;//此处的打印数据看起来万分不直观,所以须求安装yum
install graphviz 图形化界面展现,更直观
$x->save_run($data, $xhprofFilename);

上述小demo执行后,会在xhprof_data目录下生成一个分析结果保存文件,网页端访问结果文件,如下图:
图片 4

图片 5

当自家在点[View Full Callgraph]翻看图形分析界面时,难点出现了,如下图:
图片 6
好在网上查到原因是,php配置文件中有个disable_functions禁用函数列表,把内部的proc_open铲除即可。

图表分析结果突显如下
图片 7

...
#这里要使用相对路径加载的话首先要看一下extension_dir配置的路径,或者直接写上`.so`文件的绝对能够路径即可。。。
extension=xhprof.so
...
sudo apachectl restart
##测试扩展是否安装成功,有如下输出则ok
php --ri xhprof
...
 xhprof
 xhprof => 0.9.2
 CPU num => 4
...
vi /etc/php5/fpm/php.ini

5、将下边八个目录复制到xhprof_data的同级目录下(最好都停放web根目录下)

翻看分析结果文件有用

//执行
cp -r xhprof_html /home/wwwroot/default/xhprof_html
cp -r xhprof_lib /home/wwwroot/default/xhprof_lib

//改变xhprof_data目录拥有者,为了浏览器访问时能在xhprof_data目录下写入文件
chown -R www:www xhprof_data

5、将上边多少个目录复制到xhprof_data的同级目录下(最好都停放web根目录下)

翻看分析结果文件有用,如下图所示:

图片 8

//执行
cp -r xhprof_html /home/wwwroot/default/xhprof_html
cp -r xhprof_lib /home/wwwroot/default/xhprof_lib

//改变xhprof_data目录拥有者,为了浏览器访问时能在xhprof_data目录下写入文件
chown -R www:www xhprof_data

xhprof概述:

刺探了上边那么些,其实就已经可以将xhprof整合到其余我们已有些体系中去了。近年来大多数MVC框架都有唯一的入口文件,只需要在输入文件的起来处注入xhprof的逻辑

1、安装

  • PHP5版本的装置

wget http://pecl.php.net/get/xhprof-0.9.4.tgz
tar -zxvf xhprof-0.9.4.tgz 
cd xhprof-0.9.4
cd extension/
phpize
./configure
make
make install
  • PHP7版本的设置

    下载源码包xhprof:

unzip xhprof-php7.zip 
cd xhprof-php7/extension/
phpize 
./configure --with-php-config=/usr/local/php/bin/php-config 
make
make install

3、添加一个环境变量XHPROF_ROOT_PATH

为了中期每个品种都能利用xhprof来进展质量分析,提出给PHP加一个环境变量,这样之后,在其他项目代码里都足以很便利的调用xhprof来分析质量瓶颈,请执行如下操作:

vim /usr/local/php/etc/php-fpm.conf
env[XHPROF_ROOT_PATH]=/usr/local/php/include/xhprof/

cd graphviz-2.38.0/
#后面参数是要确保安装了libphp才行哦【没安装的 brew install linpng 就可】
./configure --with-png=yes
make
sudo make install

那样所有的php-fpm请求的php文件前都会活动注入/opt/inject.php文件

目录

4、将xhprof主题源代码复制到上述XHPROF_ROOT_PATH环境变量所指定的目录下

cp -r xhprof_lib /usr/local/php/include/xhprof/xhprof_lib

更加多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP扩大开发教程》、《php缓存技术总括》、《PHP互联网编程技巧统计》、《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP数组(Array)操作技能大全》及《php字符串(string)用法总计》

假使应用Nginx的话,还能通过Nginx的安顿文件设置,这样侵入性更小,并且可以兑现基于站点的流入。

1、xhprof品质分析小demo

下边写的三种格局贯彻阶乘的代码

<?php

xhprof_enable(XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);

$n = 5;

echo jc($n);
echo '<br>';

echo jc($n);
echo '<br>';

echo jc($n);
echo '<br>';

function jc($n){
    if($n == 1){
        return 1;
    }

    return $n * jc($n-1);
}

function jc2($n){
    $m = 1;
    for($i=1; $i<=$n; $i++){
        $m = $m * $i;
    }

    return $m;
}

function jc3($n){
    $arr = [];
    $arr[1] = 1;

    for($i = 2; $i<=$n; $i++){
        $arr[$i] = $i * $arr[$i-1];
    }

    return $arr[$n];
}


$data = xhprof_disable();
//$_SERVER['XHPROF_ROOT_PATH'] 这就是第三步添加的那个环境变量
include_once $_SERVER['XHPROF_ROOT_PATH'] . "xhprof_lib/utils/xhprof_lib.php";
include_once $_SERVER['XHPROF_ROOT_PATH'] . "xhprof_lib/utils/xhprof_runs.php";
$x = new XHProfRuns_Default();

//拼接文件名
$xhprofFilename = date('Ymd_His');

//print_r($data);die;//此处的打印数据看起来非常不直观,所以需要安装yum install graphviz 图形化界面显示,更直观
$x->save_run($data, $xhprofFilename);

上述小demo执行后,会在xhprof_data目录下生成一个分析结果保存文件,网页端访问结果文件,如下图:
图片 9

图片 10

当自家在点[View Full Callgraph]翻看图形分析界面时,难题应运而生了,如下图:
图片 11
好在网上查到原因是,php配置文件中有个disable_functions禁用函数列表,把内部的proc_open消除即可。

图片分析结果突显如下
图片 12

总结

xhprof是一个剖析PHP代码品质瓶颈,进步PHP代码效能的便民工具,通过xhprof,可以见见代码慢在何地,哪个地方还有优化的上空等等。

最终分享一个关于xhprof正确的资料,可以到Linux公社资源站下载:

——————————————分割线——————————————

免费下载地址在

用户名与密码都是www.linuxidc.com

切实下载目录在 /二〇一八年资料/3月/28日/xhprof增添安装与使用/

下载方式见
http://www.linuxidc.com/Linux/2013-07/87684.htm

——————————————分割线——————————————

Linux公社的RSS地址:

正文永久更新链接地址

图片 13

正文实例分析了PHP质量测试工具xhprof安装与应用方法。分享给大家供大家参考,具体如下:

pecl install xhprof-beta
echo "extension=xhprof.so" > /etc/php5/fpm/conf.d/xhprof.ini
service php5-fpm restart
  • 一、xhprof扩张安装步骤
  • 二、xhprof的使用
  • 总结
  • 参考资料

7、形象化的查看分析结果

设置图形绘制工具,后边的剖析结果可以由此该工具以图纸突显,更直观
施行安装命令:yum install graphviz

XHProf是一个分段PHP品质分析工具。它报告函数级其他请求次数和各个目标,包罗阻塞时间,CPU时间和内存使用景况。一个函数的开销,可细分成调用者和被调用者的费用,XHProf数据搜集阶段,它记录调用次数的追踪和包容性的目标弧在动态callgraph的一个顺序。它独有的数据统计的报告/后甩卖阶段。在数额搜集时,XHProfd通过检测循环来处理递归的函数调用,并通过给递归调用中种种深度的调用一个得力的命名来躲避死循环。XHProf分析报告有助于领会被执行的代码的布局,它有一个简约的HTML的用户界面(
PHP写成的)。基于浏览器的属性分析用户界面能更便于查看,或是与同行们大饱眼福收获。也能绘制调用关系图。

 yum install -y graphviz
 yum install graphviz-gd

总结

xhprof是一个剖析PHP代码品质瓶颈,提升PHP代码效能的惠及工具,通过xhprof,可以看出代码慢在哪个地方,哪儿还有优化的长空等等。

说到底分享一个关于xhprof没错的素材
ipc2015-xhprof.pdf
下载链接: 密码:11p0

2、修改php.ini配置文件

在php.ini配置文件中加进下边配置,并创制目录/home/wwwroot/default/xhprof_data

[xhprof]
extension = xhprof.so
// xhprof分析结果文件存放根目录
xhprof.output_dir = /home/wwwroot/default/xhprof_data

编译安装xhprof

根据phpinfo找到 extension_dir的目录
(/etc/php.d/xhprof.ini)

2、修改php.ini配置文件

在php.ini配置文件中增添上边配置,并创立目录/home/wwwroot/default/xhprof_data

[xhprof]
extension = xhprof.so
// xhprof分析结果文件存放根目录
xhprof.output_dir = /home/wwwroot/default/xhprof_data
cd xhprof-0.9.4/xhprof-0.9.4/extension/
phpize
./configure
make
sudo make install

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注