首页 技术 正文
技术 2022年11月15日
0 收藏 911 点赞 3,391 浏览 2977 个字

Xhprof是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,还可以用在生产环境中,也可以由程序开关来控制是否进行profile。

对于还在使用php5的朋友们,可以安装pecl的xhprof扩展

http://pecl.php.net/package/xhprof

但是因为长时间不更新,针对php7已无法正常安装,可以使用下的地址

https://github.com/longxinH/xhprof/releases

  

一、安装xhprof

下载xhprof源码

wget https://github.com/longxinH/xhprof/archive/v2.1.0.tar.gz

解压源码包

tar xf v2.1.0.tar.gz

进入目录

cd xhprof-2.1.0/extension

运行phpize,请自行修改你们的phpize路径

/data/nmp/php7/bin/phpize

运行configure,请自行修改你们的php-config路径

./configure --with-php-config=/data/nmp/php7/bin/php-config

编译安装

make && make install

修改php.ini配置,如果extension_dir配置了就不用再配置了,如果没配置,则把该目录指向,扩展编译安装后显示的路径。

extension_dir = "/data/nmp/php7/lib/php/extensions/no-debug-zts-20170718"[xhprof]
extension = xhprof.so
xhprof.output_dir = /tmp/xhprof

  

二、配置xhprof

我们把扩展目录下的xhprof_html和xhprof_lib复制出来,单独存放到一个目录中。

cp -a xhprof_html /data/wwwroot/xhprof
cp -a xhprof_lib /data/wwwroot/xhprof

针对要分析的项目,可以把如下代码添加到入口文件中:

//开启性能分析
xhprof_enable(XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_CPU);
//php中止时运行的函数
register_shutdown_function(function () {
//停止性能分析
$xhprof_data = xhprof_disable();
if (function_exists('fastcgi_finish_request')) {
fastcgi_finish_request();
}
//引入xhprof库文件,路径请自行修改
$XHPROF_ROOT = realpath(dirname(__FILE__) . '/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();
//导出性能分析数据,默认xhprof.output_dir指定的目录
$run_id = $xhprof_runs->save_run($xhprof_data, 'xhprof');
});

数据默认会导出到xhprof.output_dir指定目录,所以需创建该目录,并给予相关权限  

mkdir /tmp/xhprof
chmod -R 777 /tmp/xhprof

这里我们写一个简单程序进行一下演示  

<?phperror_reporting(E_ALL);
ini_set('display_errors', 'on');//开启性能分析
xhprof_enable(XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_CPU);
//php中止时运行的函数
register_shutdown_function(function () {
//停止性能分析
$xhprof_data = xhprof_disable();
if (function_exists('fastcgi_finish_request')) {
fastcgi_finish_request();
}
//引入xhprof库文件,路径请自行修改
$XHPROF_ROOT = realpath(dirname(__FILE__) .'/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();
//导出性能分析数据,默认xhprof.output_dir指定的目录
$run_id = $xhprof_runs->save_run($xhprof_data, 'xhprof');
});function a()
{
echo 'aaa';
sleep(1);
b();
}function b()
{
echo 'bbb';
sleep(3);
c();
}function c()
{
echo 'ccc';
sleep(5);
}a();

  

三、配置虚拟主机,用来查看分析日志

server {
listen 80;
server_name xhprof.xxx.com;
charset utf-8; root /data/wwwroot/xhprof/xhprof_html;
index index.html index.htm index.php; location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

我们可以通过访问xhprof.xxx.com来查看分析日志了。

使用xhprof对php7程序进行性能分析

如果点击 [View Full Callgraph] 无法查看,则需装如下工具:

yum install -y libpng
yum install -y graphviz

如果上面安装完后,还是无法显示,并报如下错误:

failed to execute cmd: " dot -Tpng". stderr: `Format: "png" not recognized.
Use one of: canon cmap cmapx cmapx_np dot eps fig gv imap imap_np ismap pic plain plain-ext pov ps ps2 svg svgz tk vml vmlz xdot '

我们需要手动安装 graphviz

https://graphviz.gitlab.io/_pages/Download/Download_source.html

下载源码包,并编译安装

tar xf graphviz.tar.gz
cd graphviz-2.40.1
./configure
make
make install

  

  

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,088
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,564
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,412
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,185
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,822
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,905