Linux环境下面安装PHP性能分析工具XHProf(PHP5.6)

简介: Linux环境下面安装PHP性能分析工具XHProf(PHP5.6)


安装XHProf

1. 安装PHP扩展,XHProf的官方下载地址为http://pecl.php.net/package/xhprof,默认的PHP没有自带这个扩展,所以要进行安装。


wget http://pecl.php.net/get/xhprof-0.9.3.tgz #获取安装包

tar zxf xhprof-0.9.3.tgz  #解压安装包

cd xhprof-0.9.3  #进入文件夹

cp -r xhprof_html xhprof_lib /data/xhprof #根据具体情况进行拷贝

cd extension

phpize  #phpize侦测PHP安装环境

./configure

make

make install

备注:xhprof_html中存放分析结果项目,用来展示性能分析,需要将文件夹放到apache的项目目录下面才能运行访问 ;xhprof_lib作为三方库,用于引入到PHP项目中。


2. 配置php.ini支持XHProf,如果不知道php.ini在哪里,可以使用命令find / -name php.ini。


[xhprof]

extension=xhprof.so

;

; directory used by default implementation of the iXHProfRuns

; interface (namely, the XHProfRuns_Default class) for storing

; XHProf runs.

;

xhprof.output_dir=/data/xhprof/logs #根据实际情况进行配置

配置成功后,重启apache,使用service apache restart 或者service httpd restart等相关命令,如果phpinfo()出现如下页面,表示安装成功。




3. 安装Graphviz,安装Graphviz的目的是为了xhprof图形化web工具查看profiling log文件。


方式1:


wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz

tar zxf graphviz-2.24.0.tar.gz

cd graphviz-2.24.0

./configure

make

make install

如果找不到对应的资源可以使用这个链接https://graphviz.gitlab.io/pub/graphviz/stable/SOURCES/graphviz.tar.gz


方式2:使用命令 yum install graphviz 直接安装。


4. 安装libpng(可能需要的步骤)


编译graphviz提示信息png: No (missing png.h),也就是dot 不支持PNG,此时需要安装libpng包。


wget http://nchc.dl.sourceforge.net/project/libpng/libpng15/1.5.1/libpng-1.5.1.tar.gz

tar zxf libpng-1.5.1.tar.gz

cd libpng-1.5.1

./configure

make

make install

或者使用命令yum install libpng直接进行安装。


开始进行性能分析

1. 创建一个文件test.php,然后按照下面的模式进行编码。


<?php


// start profiling

xhprof_enable();

// xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); // 允许CPU和内存输出

// run program

....

// stop profiler

$xhprof_data = xhprof_disable();

//

// Saving the XHProf run

// using the default implementation of iXHProfRuns.

//

$XHPROF_ROOT = "/projects/xhprof";//这里填写的就是你的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();

 

// Save the run under a namespace "xhprof_foo".

//

// **NOTE**:

// By default save_run() will automatically generate a unique

// run id for you. [You can override that behavior by passing

// a run id (optional arg) to the save_run() method instead.]

//

$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";


?>

2. 查看分析报告


在浏览器中访问该页面后,会在/data/xhprof/logs这个目录下面生成一个.xhprof_foo结尾的文件,然后会在页面上显示http://<xhprof-ui-address>/index.php?run=49bafaa3a3f66&source=xhprof_foo 这句代码,然后访问上面说到的展示目录http://xxx/xhprof_html/index.php?run=49bafaa3a3f66&source=xhprof_foo就可以看到内容了。




3. 查看函数调用图,然后点击[View Full Callgraph],就可以看到详细的函数调用过程。




问题总结

1.  编译XHProf扩展不通过,由于之前使用的xhprof-0.9.2版本,这个版本是09年的,比较老,换成xhprof-0.9.3就可以编译通过了。


2. 放在PHP里面后,出现了报错,将启动改为下面的代码就好了。


xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);

3. 点击[View Full Callgraph]出现了。以为是没有安装好graphviz,结果是由于没有找到日志文件,请仔细读懂下面语句的意思。


Error: either we can not find profile data for run_id 4d7f0bd99a12f or the threshold 0.01 is too small or you do not have ‘dot’ image generation utility installed.

4. 由于安装了两个版本的graphviz,手动安装的版本没有安装好png支持,老是出现不支持png的提示,然后卸载掉这个手动版本就可以了,具体做法是cd到安装目录,执行make uninstall。


附录

XHProf报告字段含义:




附加一篇:给CentOS6.3 + PHP5.3 安装PHP性能测试工具 XHProf-0.9.2 给CentOS6.3 + PHP5.3 安装PHP性能测试工具 XHProf-0.9.2_看世界-Neilson的博客-CSDN博客


相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
20天前
|
安全 Linux 网络安全
Linux环境中安装和使用Paramiko
Linux环境中安装和使用Paramiko
64 12
|
19天前
|
Java 关系型数据库 MySQL
Linux环境
Linux环境
33 5
|
28天前
|
设计模式 数据库连接 PHP
PHP中的设计模式:提升代码的可维护性与扩展性在软件开发过程中,设计模式是开发者们经常用到的工具之一。它们提供了经过验证的解决方案,可以帮助我们解决常见的软件设计问题。本文将介绍PHP中常用的设计模式,以及如何利用这些模式来提高代码的可维护性和扩展性。我们将从基础的设计模式入手,逐步深入到更复杂的应用场景。通过实际案例分析,读者可以更好地理解如何在PHP开发中应用这些设计模式,从而写出更加高效、灵活和易于维护的代码。
本文探讨了PHP中常用的设计模式及其在实际项目中的应用。内容涵盖设计模式的基本概念、分类和具体使用场景,重点介绍了单例模式、工厂模式和观察者模式等常见模式。通过具体的代码示例,展示了如何在PHP项目中有效利用设计模式来提升代码的可维护性和扩展性。文章还讨论了设计模式的选择原则和注意事项,帮助开发者在不同情境下做出最佳决策。
|
1天前
|
监控 Linux 云计算
Linux操作系统在云计算环境中的实践与优化###
【10月更文挑战第16天】 本文探讨了Linux操作系统在云计算环境中的应用实践,重点分析了其在稳定性、安全性和高效性方面的优势。通过具体案例,阐述了Linux如何支持虚拟化技术、实现资源高效分配以及与其他开源技术的无缝集成。文章还提供了针对Linux系统在云计算中的优化建议,包括内核参数调整、文件系统选择和性能监控工具的应用,旨在帮助读者更好地理解和应用Linux于云计算场景。 ###
8 3
|
4天前
|
敏捷开发 存储 数据可视化
解锁团队高效秘诀:5款顶尖PHP任务管理工具推荐
在现代企业中,高效的任务管理系统已成为不可或缺的工具,特别是在团队协作和项目管理中。PHP任务管理系统因其灵活性、开源性和易用性,备受企业管理者、项目团队和开发人员青睐。本文将介绍什么是PHP任务管理系统,其应用场景,以及推荐5款顶级的PHP任务管理系统,帮助企业提升效率和管理能力。
|
9天前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
114 3
|
29天前
|
设计模式 算法 PHP
PHP中的设计模式:策略模式的深入探索与实践在软件开发的广袤天地中,PHP以其独特的魅力和强大的功能,成为无数开发者手中的得力工具。而在这条充满挑战与机遇的征途上,设计模式犹如一盏明灯,指引着我们穿越代码的迷雾,编写出更加高效、灵活且易于维护的程序。今天,就让我们聚焦于设计模式中的璀璨明珠——策略模式,深入探讨其在PHP中的实现方法及其实际应用价值。
策略模式,这一设计模式的核心在于它为软件设计带来了一种全新的视角和方法。它允许我们在运行时根据不同情况选择最适合的解决方案,从而极大地提高了程序的灵活性和可扩展性。在PHP这门广泛应用的编程语言中,策略模式同样大放异彩,为开发者们提供了丰富的创作空间。本文将从策略模式的基本概念入手,逐步深入到PHP中的实现细节,并通过一个具体的实例来展示其在实际项目中的应用效果。我们还将探讨策略模式的优势以及在实际应用中可能遇到的挑战和解决方案,为PHP开发者提供一份宝贵的参考。
|
1月前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
34 5
|
1月前
|
Java Linux Python
Linux环境下 代码java调用python出错
Linux环境下 代码java调用python出错
38 3
|
1月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决