PHP7下安装并使用xhprof性能分析工具

 更新时间:2021年04月20日 14:36:29   作者:diligentyang  
这篇文章主要介绍了PHP7下安装并使用xhprof性能分析工具,对性能感兴趣的朋友,可以研究下

该 xhprof 版本是从 https://github.com/longxinH/xhprof 获取

安装 xhprof

cd xhprof/extension/

phpize

./configure 

make

然后在/etc/php.ini中根据情况加入

extension=xhprof.so

执行

php -m | grep xhprof

可以看见输出,说明php扩展安装成功,然后重启Apache或者php-fpm

运行

可以直接运行从github上clone下来的文件里面example目录下的那个例子

输出如下

Array

(

    [main()] => Array

        (

            [ct] => 1

            [wt] => 9

        )

)

---------------

Assuming you have set up the http based UI for 

XHProf at some address, you can view run at 

http://<xhprof-ui-address>/index.php?run=592567308784c&source=xhprof_foo

然后复制index.php后面的?run=592567308784c&source=xhprof_foo

访问

xhprof_html/index.php?run=592567308784c&source=xhprof_foo

可看见输出

点击中间的 View Full Callgraph 即可看见性能分析图片

报错

failed to execute cmd:" dot -Tpng". stderr:sh: dot:command not found。

//解决方案yum install graphviz

随机应变

比如想测试自己的项目,例如一款框架的性能分析。

复制xhprof_lib/utils/下的两个文件

xhprof_lib.php和xhprof_runs.php到入口文件同级目录,然后在入口文件起始位置添加

// start profiling
xhprof_enable();

结束位置添加

// stop profiler
$xhprof_data = xhprof_disable();

// display raw xhprof data for the profiler run
print_r($xhprof_data);


include_once "xhprof_lib.php";
include_once "xhprof_runs.php";

// save raw data for this profiler run using default
// implementation of iXHProfRuns.
$xhprof_runs = new XHProfRuns_Default();

// save the run under a namespace "xhprof_foo"
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");

echo "---------------\n".
     "Assuming you have set up the http based UI for \n".
     "XHProf at some address, you can view run at \n".
     "http://<xhprof-ui-address>/index.php?run=$run_id&source=xhprof_foo\n".
     "---------------\n";

即可得到如上所示的那个url,然后再次去访问

http://***/xhprof_html/index.php?run=*****&source=xhprof_foo

得到如下所示页面

查看图片

图中红色的部分为性能比较低,耗时比较长的部分,我们可以根据根据哪些函数被标记为红色对系统的代码进行优化

补充

    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峰值百分比。

以上就是PHP7下安装并使用xhprof性能分析工具的详细内容,更多关于PHP7下安装并使用xhprof的资料请关注脚本之家其它相关文章!

相关文章

  • php提交post数组参数实例分析

    php提交post数组参数实例分析

    这篇文章主要介绍了php提交post数组参数的用法,结合实例分析了php使用post进行参数提交的相关技巧,需要的朋友可以参考下
    2015-12-12
  • 用php解析html的实现代码

    用php解析html的实现代码

    用php解析html的实现代码,一般做采集的朋友需要用得到。
    2011-08-08
  • php中计算中文字符串长度、截取中文字符串的函数代码

    php中计算中文字符串长度、截取中文字符串的函数代码

    在做PHP开发的时候,由于我国的语言环境问题,所以我们常常需要对中文进行处理。
    2011-08-08
  • PHP 7.1新特性的汇总介绍

    PHP 7.1新特性的汇总介绍

    大家都知道PHP 7.1 release版本发布在即,所以这篇文章就给大家整理一下7.1中的一些新特性以供了解。所有内容均选自官方 RFC 文档。有需要的朋友们可以参考借鉴,下面来跟着小编一起学习学习吧。
    2016-12-12
  • php使用memcoder将视频转成mp4格式的方法

    php使用memcoder将视频转成mp4格式的方法

    这篇文章主要介绍了php使用memcoder将视频转成mp4格式的方法,涉及php操作视频文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • PHP实现删除非站内外部链接实例代码

    PHP实现删除非站内外部链接实例代码

    一般在做网站系统的时候,出于优化等因素的考虑需要再添加文章的时候删除掉不是本站的链接,对于这一要求可以通过让PHP处理下文章内容,来达到文章外部链接的自动删除的效果。需要的朋友可以参考下
    2014-06-06
  • PHP浮点数精度问题汇总

    PHP浮点数精度问题汇总

    这篇文章主要介绍了PHP浮点数精度问题汇总,本文着重探讨PHP浮点数精度损失问题,用三个段落不同的方式讲解了这个问题的形成原因以及解决方法,需要的朋友可以参考下
    2015-05-05
  • PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function

    PHP严重致命错误处理:php Fatal error: Cannot redeclare class or funct

    这篇文章主要介绍了PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function,需要的朋友可以参考下
    2017-02-02
  • php数值计算num类简单操作示例

    php数值计算num类简单操作示例

    这篇文章主要介绍了php数值计算num类简单操作,结合实例形式分析了PHP数值计算相关函数与使用技巧,需要的朋友可以参考下
    2020-05-05
  • thinkphp中的多表关联查询的实例详解

    thinkphp中的多表关联查询的实例详解

    这篇文章主要介绍了thinkphp中的多表关联查询的实例详解的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
    2017-10-10

最新评论