打造xhprof调试环境

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分析了, 这个姿势是不是很酸爽呢? 若是的话,记得顶一下哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值