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

admin3年前PHP教程31

该 xhprof 版本是从 github/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 

<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 profilingxhprof_enable();

结束位置添加

// stop profiler$xhprof_data = xhprof_disable();// display raw xhprof data for the profiler runprint_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 "---------------". "Assuming you have set up the http based UI for ". "XHProf at some address, you can view run at ". "<xhprof-ui-address>/index.php?run=$run_id&source=xhprof_foo". "---------------";

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

***/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中strval()函数实例用法

1、函数说明strval()函数是PHP中的内置函数,用于将任何标准值(字符串、整数或双精度)转换为字符串。我们不能在数组或对象中使用strval。如果使用该函数,该函数只返回需要转换的值的类型名称。...

国外多ip服务器有哪些地区的呢

世界各地都有许多可供选择的多IP服务器地区。以下列出了一些主要的国外多IP服务器地区:美国:美国是全球最大的互联网市场之一,拥有许多大型云服务提供商和数据中心。由于其地理位置、网络基础设施和技术发展,...

用php如何解决大文件分片上传问题

如果上传的文件只有小于10M的话, 就没必要考虑这样的做法, 直接在 php.ini中更改一下 upload_max_filesize = 10m post_max_size = 10m 这样就可以了...

php中日期类型转换实例讲解

1、使用date()函数将UNIX时间戳转换为日期。2、使用strtotime()函数将日期转换为UNIX时间戳。在PHP中是可以完成日期格式转换的,不过有一个缺点就是占用PHP解析器的解析时间,因此...

array_values()在php中返回数组的操作实例

在对数组的一些操作上,有些人对于键值方面不太理解。为了方便大家能够更好地对一些值进行返回,本篇带来了array_values() 函数进行介绍,使用后能直接返回数组。下面我们就array_values...

分析Composer实现自动加载原理

目录1. 入口文件2.  autoload.php3. autoload_real.php5. spl_autoload_register和spl_autoload_unregister函数...