0

0

[PHP]为项目引入函数级的性能监控_PHP教程

php中文网

php中文网

发布时间:2016-07-14 10:09:35

|

931人浏览过

|

来源于php中文网

原创

使用PHP扩展XHProf来实现函数级的性能监控。

 
引用官方对XHProf的描述:
 
XHProf is a function-level hierarchical profiler for PHP and has a simple HTML based navigational interface. The raw data collection component is implemented in C (as a PHP extension). The reporting/UI layer is all in PHP. It is capable of reporting function-level inclusive and exclusive wall times, memory usage, CPU times and number of calls for each function. Additionally, it supports ability to compare two runs (hierarchical DIFF reports), or aggregate results from multiple runs.
提供函数级别的性能信息,例如调用次数,其中包括阻塞时间,内存使用情况和CPU时间。
1. 安装与配置
 
/data/software # wget http://pecl.php.net/get/xhprof-0.9.2.tgz
/data/software # tar zxvf xhprof-0.9.2.tgz
/data/software # cd xhprof-0.9.2/
/data/software/xhprof-0.9.2 # ls -alp
总计 968
drwxr-xr-x  6 root root    4096 2013-03-18 09:09 ./
drwxr-xr-x 47 root root    8192 2013-03-18 09:09 ../
-rw-r--r--  1 1425 users   3359 2009-06-02 01:52 CHANGELOG
-rw-r--r--  1 1425 users    266 2009-06-02 01:52 CREDITS
drwxr-xr-x  2 root root    4096 2013-03-18 09:09 examples/       # demo
drwxr-xr-x  8 root root    4096 2013-03-18 09:09 extension/      # pecl 
-rw-r--r--  1 1425 users  10174 2009-06-02 01:52 LICENSE
-rw-r--r--  1 1425 users    186 2009-06-02 01:52 README
-rw-r--r--  1 root root  931660 2009-06-02 01:55 xhprof
drwxr-xr-x  6 root root    4096 2013-03-18 09:09 xhprof_html/     # 自带的界面包
drwxr-xr-x  4 root root    4096 2013-03-12 15:40 xhprof_lib/      # 函数库
/data/software/xhprof-0.9.2 # cd extension/
/data/software/xhprof-0.9.2/extension # phpize 
/data/software/xhprof-0.9.2/extension # ./configure --with-php-config=/usr/local/services/php/bin/php-config --enable-xhprof
/data/software/xhprof-0.9.2/extension # make
/data/software/xhprof-0.9.2/extension # make install
Installing shared extensions:     /usr/local/services/php/lib/php/extensions/no-debug-non-zts-20090626/
/data/software/xhprof-0.9.2/extension # cp /usr/local/services/php/lib/php/extensions/no-debug-non-zts-20090626/xhprof.so /usr/local/services/php/extensions/
# 将生成的xhprof.so复制到extension_dir目录下,配置php.ini,重启php-fpm或服务器即可
 
// php.ini
[xhprof]
extension=xhprof.so
xhprof.output_dir="/data/logs/servers/xhprof"
 
# 检查xhprof是否加载
/data/software/xhprof-0.9.2/extension # php -m|grep xhprof
xhprof
2.性能分析与日志记录
 
首先开启XHProf,以便记录十分之一的请求的性能分析日志(日志记录在/data/logs/servers/xhprof):
 
$xhprofEnabled = FALSE;
if(extension_loaded('xhprof') && mt_rand(1, 10) === 1) { // 分析十分之一的请求性能
    // 开启性能监测
    xhprof_enable(/*XHPROF_FLAGS_CPU + */XHPROF_FLAGS_MEMORY + XHPROF_FLAGS_NO_BUILTINS );
    $xhprofEnabled = TRUE;
}
接着注册请求结束处理器,以便请求结束时记录下XHProf性能分析日志:
 
function profile_record() {
    if(isset($GLOBALS['xhprofEnabled']) && $GLOBALS['xhprofEnabled']) {
        $xhprof_data = xhprof_disable();
 
        $path = $_SERVER['PHP_SELF'];
        if($pos = strpos($path, '/htdocs')) {
            $path = substr($path, $pos+7);
        }
        $basename = str_replace(array('.', '/'), '_', ltrim($path, '/'));
 
        /* 官方Demo,请参考下载包里的xhprof-0.9.2/examples/sample.php 
         * //
         * // Saving the XHProf run
         * // using the default implementation of iXHProfRuns.
         * //
         * 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_runs = new HWSL_XhProfRuns();
        // 记录日志时引入时间截,方便比较不同版本间的性能差异
        $run_id = $xhprof_runs->save_run($xhprof_data, 'xhprof_itravel_'.$basename.'_'.date('YmdHis'));
    }
}
 
register_shutdown_function('profile_record');
生成的日志以文件保存在:xhprof.output_dir=”/data/logs/servers/xhprof”
 
生成的日志文件命名规则为:.
 
其中命名空间的命名规则定义为:'xhprof_itravel_'.$basename.'_'.date('YmdHis')
 
$basename记录相应的文件位置,date(‘YmdHis’)记录当前时间戳,以便比较同一文件不同版本间的性能差异。
 
3.日志分析
 
然后,通过官方提供的用户界面包xhprof-0.9.2/xhprof_html/来查看运行报告:
 
要查看run_id是和命名空间是的报告,访问URL:
 
 
 
其中各列含义如下:
 
Inclusive Time (或子树执行时间) :包括子树执行时间的所有执行时间。
Exclusive Time/Self Time :函数执行本身的时间花费。不包括子树执行时间。
Wall时间 :又名经过的时间或挂钟时间。www.2cto.com
CPU时间 : CPU时间在用户空间+ CPU时间在内核空间。
也可以查看图形化的性能分析报告(其中高亮显示的路径直观反映了函数调用栈中最大的性能损耗路径):
 
 
 
4.扩展阅读
 
在生产环境中使用php性能测试工具XHProf
关于改善XHProf使用情况的设想
XHProf文件(草稿)

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/477642.htmlTechArticle使用PHP扩展XHProf来实现函数级的性能监控。 引用官方对XHProf的描述: XHProf is a function-level hierarchical profiler for PHP and has a simple HTML based navi...

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

928

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

307

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

183

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

29

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

103

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

54

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

17

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

764

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

92

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 12.3万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号