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博客


相关文章
|
8月前
|
JavaScript 前端开发 API
PHP 发展简史:从个人工具到互联网基石
PHP 起源于 1994 年,由 Rasmus Lerdorf 为简化网页开发而创建,后逐步演变为功能强大的编程语言。从最初的个人工具到支撑全球 77.4% 的服务器端脚本市场,PHP 凭借易用性、稳定性和广泛的生态支持,在 Web 开发领域占据重要地位。经历 PHP 6 的挫折后,PHP 7 实现性能飞跃,如今已更新至 PHP 8.2,持续为 WordPress、Facebook、Wikipedia 等大型项目提供动力。PHP 的发展历程,不仅是一部技术演进史,更映射了互联网时代的变迁。
396 8
|
7月前
|
NoSQL API PHP
PHP-Casbin:一个让开发者不再为权限控制 “重复造轮子” 的工具
PHP-Casbin 是一个轻量、灵活的开源权限框架,支持 ACL、RBAC、ABAC 等多种模型,帮助 PHP 开发者高效解决权限控制难题。它具备跨框架、跨语言、动态权限、多租户隔离等能力,适用于电商、SaaS、政企系统等复杂场景,让开发者摆脱重复造轮子,提升项目安全与可维护性。
374 0
|
8月前
|
Ubuntu Linux
计算机基础知识:linux系统怎么安装?
在虚拟机软件中创建一个新的虚拟机,并选择相应操作系统类型和硬盘空间大小等参数。将下载的 ISO 镜像文件加载到虚拟机中。启动虚拟机,进入安装界面,并按照步骤进行安装。安装完成后,可以在虚拟机中使用 Linux 系统。
|
6月前
|
安全 Linux iOS开发
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
416 6
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
|
6月前
|
消息中间件 Kafka Linux
Linux下安装Kafka 3.9.1
本文介绍Kafka 3.9.1版本的安装与配置,包括通过ZooKeeper或KRaft模式启动Kafka。涵盖环境变量设置、日志路径修改、集群UUID生成、存储格式化及服务启停操作,适用于Linux环境下的部署实践。
764 0
|
6月前
|
存储 监控 算法
基于 PHP 布隆过滤器的局域网监控管理工具异常行为检测算法研究
布隆过滤器以其高效的空间利用率和毫秒级查询性能,为局域网监控管理工具提供轻量化异常设备检测方案。相比传统数据库,显著降低延迟与资源消耗,适配边缘设备部署需求,提升网络安全实时防护能力。(238字)
237 0
|
8月前
|
网络协议 关系型数据库 Linux
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
在App Service for Linux环境中,无法像Windows一样直接使用网络排查工具抓包。本文介绍了如何通过TCPDUMP在Linux环境下抓取网络包,包括SSH进入容器、安装tcpdump、执行抓包命令及下载分析文件的完整操作步骤。
389 5
|
8月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
前端开发 测试技术 PHP
优秀而又实用的PHP工具集锦
优秀而又实用的PHP工具集锦   浏览:1141 发布日期:2013/09/04 分类:技术分享 PHP是目前实用最为广泛的服务器端开源脚本语言之一,很多优秀的开源程序都是基于PHP构建的,比如大名鼎鼎的WordPress、Pligg等数不胜数。
2283 0

热门文章

最新文章