使用XDebug和WinCacheGrind分析PHP性能
WEB性能日志工具
1.MySQL慢查询日志
2.Xdebug日志
说道PHP代码调试,对于有经验的PHPer,通过echo、print_r、var_dump函数,或PHP开发工具zend studio、editplus可解决大部分问题,但是对于PHP入门学习的童鞋来说有一定的难度,而且仅仅通过上述这些PHP调试手段,也很难准确发现PHP性能方面的问题,Xdebug是一个非常有用的PHP调试工具 。
Xdebug作为PHP调试工具,提供了丰富的调试函数,也可将Xdebug安装配置为zend studio、editplus调试PHP的第三方插件,通过开启自动跟踪(auto_trace)和分析器功能,可以直观的看到PHP源代码的性能数据,以便优化PHP代码。今天和大家分享PHP调试工具Xdebug安装以及配置方面的基础知识。
Xdebug安装教程
下载Xdebug http://xdebug.org
首先我们需要下载Xdebug,务必根据安装的PHP版本,选择合适的Xdebug版本 ,如果你不清楚安装的PHP版本,你可以通过phpinfo()函数参看
安装Xdebug
将下载的php_xdebug-2.1.0-5.3-vc6.dll复制到PHP安装目录下的ext目录,ext目录专门用来存放PHP扩展库DLL文件。
配置php.ini
安装Xdebug的最后一步就是配置php.ini文件,在末尾添加
- [Xdebug]
- zend_extension="c:/php/ext/php_xdebug-2.1.0-5.3-vc6.dll"
最后重启Apache服务器,通过phpinfo()函数,可以看到
利用Xdebug测试脚本执行时间
使用Xdebug_time_index()来显示时间
测试脚本占用的内存:
xdebug_memory_usage()
xdebug还提供了一个xdebug_peak_memory_usage()来查看内存占用的峰值
Xdebug部分配置选项说明
xdebug.auto_trace = 1
是否允许Xdebug跟踪函数调用,跟踪信息以文件形式存储,默认值为0
collect_params = 1
是否允许Xdebug跟踪函数参数,默认值为0
xdebug.collect_return = 1
是否允许Xdebug跟踪函数返回值,默认值为0
xdebug.profiler_enable = 1
打开xdebug的性能分析器,以文件形式存储,这项配置是不能以ini_set()函数配置的,默认值为0
xdebug.profiler_output_dir
性能分析文件的存放位置,默认值为/tmp
xdebug.profiler_output_name
性能分析文件的命名规则,默认值为cachegrind.out.%p
xdebug.trace_output_dir
函数调用跟踪信息输出文件目录,默认值为/tmp
xdebug.trace_output_name
函数调用跟踪信息输出文件命名规则,默认为trace.%c
特别说明:Xdebug的trace和profiler的输出文件名规则是可以更改的,比如将文件名命名为具体跟踪的PHP执行文件名、进程ID、随机数等,非常方便,更多的Xdebug配置选项说明,请参考官网的Xdebug配置选项说明。
至此PHP调试工具Xdebug教程之Xdebug的安装和配置就介绍完了,今后还将陆续介绍Xdebug如何在zend studio以及editplus中配置使用。
Xdebug的crontab定时删除一天之前的日志文件,只在测试环境装
- 0 0 * * * find /tmp/xdebug/ -ctime 1 |xargs rm -f
在优化php代码执行效率的过程中,有个好办法是利用XDebug或XHProf生成Profile文件,然后查看Profile文件分析整个程序的瓶颈在哪里。如果用XDebug生成Profile文件现在XDebug Profile的查看程序有好几个
WinCacheGrind是windows下的profile查看程序,使用起来感觉还不错,profile文件太大的话偶尔会崩溃。
KCachegrind是linux下的一个图形化profile查看工具,功能很强劲。
使用XDebug和WinCacheGrind分析PHP性能相关推荐
- 使用PowerShell调用MTools分析MongoDB性能并发送邮件
使用PowerShell调用MTools分析MongoDB性能并发送邮件 问题描述: 在MongoDB日常运维中,经常需要查看连接数的趋势图.慢查询.Overflow语句.连接来源. 解决方案: 1. ...
- 用dotTace模仿下老赵的“使用Profiler分析程序性能”
最近看到老赵博客"使用Profiler分析程序性能"(http://www.cnblogs.com/JeffreyZhao/archive/2009/12/22/profiler- ...
- MySQL第12天:MySQL索引优化分析之性能优化案例实践
MySQL索引优化分析之性能优化案例实践 执行计划中各select_type含义可以看:MySQL第11天:MySQL索引优化分析之性能分析 https://weibo01.blog.csdn.net ...
- MySQL第11天:MySQL索引优化分析之性能分析
MySQL索引优化分析之性能分析 一.MySQL Query Optimizer 二.MySQL常见瓶颈 三.Explain(执行计划) 1.什么是执行计划? 2.执行计划能干什么? ...
- 使用iostat分析IO性能
使用iostat分析IO性能 对于I/O-bond类型的进程,我们经常用iostat工具查看进程IO请求下发的数量.系统处理IO请求的耗时,进而分析进程与操作系统的交互过程中IO方面是否存在瓶颈. 下 ...
- MySQL进阶篇(01):基于多个维度,分析服务器性能
本文源码:GitHub·点这里 || GitEE·点这里 一.服务器性能简介 1.性能定义 服务器性能优化是一项非常艰巨的任务,当然也是很难处理的问题,在写这篇文章的时候,特意请教下运维大佬,硬件工程 ...
- 【转】HashMap,ArrayMap,SparseArray源码分析及性能对比
HashMap,ArrayMap,SparseArray源码分析及性能对比 jjlanbupt 关注 2016.06.03 20:19* 字数 2165 阅读 7967评论 13喜欢 43 Array ...
- linux cpu监控方案,Linux性能优化和监控系列(二)分析CPU性能
分析CPU性能 top命令提供了监控CPU性能的基本功能, 如果需要更加深入的挖掘CPU的性能问题, top所提供的信息不足以做到. 由于大多数人认为CPU性能是体现服务器性能的主要因素, 所以在遇到 ...
- vin-slam中调用ceres库内部代码分析与性能优化
vin-slam中调用ceres库内部代码分析与性能优化 1,vin-slam中后端参数优化调用流程代码 2,ceres内部的求解流程(未完待续) 首先,很抱歉前几次上传的关于一些图像算法代码不全,主 ...
最新文章
- 译者招募 | 《Java编程思想》作者Bruce Eckel新作On Java 8
- 变焦即可判断物体的距离
- tcp/ip 协议栈Linux内核源码分析八 路由子系统分析三 路由表
- YOLOv3网络结构
- shell sort 最后一列排序_十个必知的排序算法|Python实例系列[1]
- windows 安装php7.4并配置phpstorm环境
- gitgithub 的使用
- 三层实例--加入信息
- 互联网晚报 | 06月14日 星期二 | 罗永浩称苹果有些产品明显退步;​旷视首席科学家孙剑博士去世;吉利拟收购魅族...
- 《仿美团SSM版》项目研发总结
- Java基础_week6
- migo获利能力段增加新字段
- c语言手写平衡二叉树非递归实现
- 三种方式,实现多可系统外网访问
- 股市的起源发展和意义
- win 7 中的快速启动栏的设置
- 中国联通和中国电信措手不及,中国移动主动发起5G流量价格战
- John介绍及常用命令使用说明
- 余数和除数以及被除数的关系
- 广域网优化技术领跑IT投资
热门文章
- 机器人学习--Imperial College London机器人学课程
- fireworks CS5安装教程
- 一个完整的Windows程序框架
- MFC 设置光标 SetCursor(HCURSOR hCursor)用法
- 用MsgWaitForMultipleObjects代替WaitForSingleObject和WaitForMultipleObjects()
- 在html中引入css内部样式表使用,CSS样式学习笔记(三)html文件引入CSS的方法(2)...
- java语言实验报告,Java语言 实验报告(二)
- AI理论知识基础(19)-线性变换(1)
- 终于有人把文本分类讲明白了!
- 谷歌的算法笔记火了,技术真牛!