使用 XDebug + Webgrind 进行 PHP 程序性能分析
时间:2022-07-26
本文章向大家介绍使用 XDebug + Webgrind 进行 PHP 程序性能分析,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
# 准备
- 安装 XDebug 扩展
- 开启 Profiler 性能跟踪器;php.ini xdebug.profiler_enable = 1 xdebug.profiler_enable_trigger = 1
- 下载 Webgrind
# Webgrind
因为 Profiler 生成的性能记录文件的格式,不是给人看的,所以需要 Webgrind 图形界面的分析工具
Webgrind 本质上是一个 PHP 网站程序
# 使用
在需要分析的 Url 后面接上 ?XDEBUG_PROFILE
,例如:http://localhost:8000/?XDEBUG_PROFILE
然后刷新 Webgrind 网页,最新的数据就会显示
# 选项
# Show 90%
所有被调用的函数和方法由高到低排序,然后取出耗时比率之和在 90%~100% 之间的前 N 个
# of Auto(newest)
选择生成的 Profiler 文件,默认是最新一次的 XDebug 分析记录
# in percent
显示百分比、毫秒或微秒
# 四色胶囊条
- 蓝色:PHP 内置函数
- 灰色:require/include
- 绿色:方法
- 橙色:自定义函数
# Invocation count
表示整个 PHP 页面从载入到执行完毕,函数被调用的总次数
# Total Self Cost
表示自身从开始到执行完毕所用消耗(不包括其他函数消耗)
# Total Inclusive Cost
表示自身从开始到执行完毕所用消耗(包括其他函数消耗)
# Calls
表示自身调用并执行的所有函数/方法名、次数及耗时
# Total Call Cost
表示被调用执行的总耗时
# Count
表示被调用执行的次数
# 总结
对公司现后台分析,果然,最耗时的还是数据库部分
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(67)-MVC与ECharts
- 2018年机器学习和数据科学重要会议概览
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(60)-系统总结
- WCF技术剖析之一:通过一个ASP.NET程序模拟WCF基础架构
- 使用动态语言来制作silverlight
- 《资讯》霍金:人工智能的威胁就像核武器,世界将发生10大变化!
- [原创]WCF技术剖析之三:如何进行基于非HTTP的IIS服务寄宿
- 厉害了,连美图CEO都开始热捧区块链了!
- Silverlight制作逐帧动画
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(58)-DAL层重构
- 糟糕了!这次新版微信,要干死所有小游戏了!
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(59)-BLL层重构
- 除了奇奇怪怪的机器人们,2017年人工智能还干了哪些“蠢事”?
- 区块链搬砖的坑及有效鉴别方法
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- RabbitMQ 最常用的 3 大模式!
- 啥?HashMap 1.8 还有死循环?你逗我呢!
- 他写的东西,你们喜欢么?
- 告诉你一个 AtomicInteger 的惊天大秘密!
- 001--算法之"高手过招"[分治算法专题]
- 快速入门使用tikz绘制深度学习网络图
- 后端服务慢成狗?试试这 7 招!
- 高性能无锁并发框架 Disruptor,太强了!
- Spring Boot 太狠了,一口气发布了 3 个版本!
- 贷款违约预测-Task2 数据分析
- Redis 最牛实践:业务层面和运维层面优化!
- 一个 randomkey 命令导致的 Redis 事故。。
- 分布式锁(数据库、Redis、ZK)拍了拍你
- 贷款违约预测-Task3 特征工程
- 用SQL代替DSL查询ElasticSearch怎样?