您的位置:首页 > 编程语言 > PHP开发

打造xhprof调试环境

2016-12-03 21:12 411 查看
XHProf是一个分层PHP性能分析工具. 其扩展只有4个函数, 常用的只有两个,见php手册. 使用起来并不复杂, 但返回的报告数据是一个大数组, 阅读很不方便, 所以还需要一个优化显示的工具, 例如xhprof的pecl包. php扩展和pecl的安装这里不详细讲解, 网上有很多教程. 下面介绍一个比较酸爽的配置方式 —- 不修改项目代码,以入侵的方式实现get参数控制任意url请求是否开启xhprof分析.

下载pecl的php代码解压后, 保存在
/www/xhprof.xxx.com/
, 以此目录为根目录, 配置一个web服务, 使用http://xhprof.xxx.com访问. 专门用于查看xhprof报告.

编辑文件
/usr/local/php/lib/auto_prepend_file.php
写入一下代码:

//根据参数控制是否开启xhprof
//@link http://blog.csdn.net/tsxw24/article/details/53447673 if (!empty($_GET['xhprof'])) {
//开启xhprof
xhprof_enable(XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_CPU);
//在程序结束后收集数据
register_shutdown_function(function() {
//保存xhprof数据
if (function_exists("xhprof_disable")) {
$xhprof_data = xhprof_disable();

define("DEBUG_LIB", "/www/xhprof.xxx.com/xhprof_lib");
include_once DEBUG_LIB . "/utils/xhprof_lib.php";
include_once DEBUG_LIB . "/utils/xhprof_runs.php";
$xhprof_runs = new XHProfRuns_Default();

$uri = $_GET['xhprof'].'-'.$_SERVER['HTTP_HOST'].$_SERVER['PATH_INFO'];
$uri = str_replace(['/', '.', '\\', '|'], '_', $uri);
$xhprof_runs->save_run($xhprof_data, $uri);
}
});
}


你也可以建在其它地方或使用其它文件名. 关键是要在php.ini里面增加一下配置

auto_prepend_file = "/usr/local/php/lib/auto_prepend_file.php"


若你的环境已经配置有auto_prepend_file, 可以把以上代码加入到原文件的后面. 配置好之后记得重启fpm让配置生效.

使用方法: 在url后面增加get参数xhprof, 如
http://xxx.com?xhprof=five
, 即可对这次访问启用xhprof分析, 并按指定的名称five生成报告文件, 用前面配置的环境
http://xhprof.xxx.com
可以查看.

至此环境里的所有php的web服务, 都不用修改修改代码, 可以方便快捷的开启xhprof分析了, 这个姿势是不是很酸爽呢? 若是的话,记得顶一下哦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  自动 php xhprof