使用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文件,在末尾添加

Java代码  

  1. [Xdebug]  
  2. 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定时删除一天之前的日志文件,只在测试环境装

Java代码  

  1. 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查看工具,功能很强劲。

时间: 2025-01-01 14:15:42

使用XDebug和WinCacheGrind分析PHP性能的相关文章

在WAMP上配置xdebug和WinCachegrind

在网上看到一篇文章说xdebug+wincachegrind是php性能调优好工具.于是去下载了这个,安装使用一下看看.:) 下面是我的安装配置 1 下载xdebug http://www.xdebug.org 下载wincachegrind:http://sourceforge.net/projects/wincachegrind/ 2 把xdebug copy到php扩展文件目录:d:/wamp/bin/php/php5.2.5/ext/ 编辑php.ini ,在其中添加如下配置行: zen

使用show profiles分析SQL性能

如何查看执行SQL的耗时 使用show profiles分析sql性能. Show profiles是5.0.37之后添加的,要想使用此功能,要确保版本在5.0.37之后. 查看数据库版本 mysql> select version(); profile默认是不打开的 mysql> show profiles; Empty set (0.02 sec) mysql> show variables like "%pro%"; 可以看到profiling 默认是OFF的.

性能测试-文本相似度分析的性能检测?

问题描述 文本相似度分析的性能检测? 利用tf-idf算法和余弦相似度算法计算了文本之间的相似度,可是结果出来了,不知道结果的好坏啊,请问大神们有没有知道怎么评测结果的好坏啊? 解决方案 分析算法复杂度.如果算法太复杂,分析起来有困难,评价算法的好坏就是给数据量大小不等的测试样本,运行得到耗费的时间. 对数据量和运行时间的曲线拟合. 糟糕的算法就是随着数据量的增加,时间或者存储的开销呈现几何级数地发散出去. 好的算法是,时间随着数据的增加,呈现常数.收敛在某个值或者是线性增加的. 解决方案二:

使用火焰图分析CPU性能回退问题

使用火焰图分析CPU性能回退问题 你能快速定位CPU性能回退的问题么? 如果你的工作环境非常复杂且变化快速,那么使用现有的工具是来定位这类问题是很具有挑战性的.当你花掉数周时间把根因找到时,代码已经又变更了好几轮,新的性能问题又冒了出来. 幸亏有了CPU火焰图(flame graphs),CPU使用率的问题一般都比较好定位.但要处理性能回退问题,就要在修改前后的火焰图之间,不断切换对比,来找出问题所在,这感觉就是像在太阳系中搜寻冥王星.虽然,这种方法可以解决问题,但我觉得应该会有更好的办法. 所

【MS SQL】通过执行计划来分析SQL性能

原文:[MS SQL]通过执行计划来分析SQL性能 如何知道一句SQL语句的执行效率呢,只知道下面3种: 1.通过SQL语句执行时磁盘的活动量(IO)信息来分析:SET STATISTICS IO ON (开启) / SET STATISTICS IO OFF (关闭) 2.通过SQL语句执行时语法分析.编译以及执行所消耗的时间:SET STATISTICS TIME ON (开启) / SET STATISTICS TIME OFF (关闭) 3.通过执行计划查看:Ctrl + L  ----

MySQL使用profile分析语句性能消耗

MySQL使用profile分析语句性能消耗 --查看profile是否开启mysql> show variables like '%profil%';+------------------------+-------+| Variable_name          | Value |+------------------------+-------+| profiling              | OFF   |         --开启SQL语句剖析功能                

Linux系统中使用iostat分析IO性能

对于I/O-bond类型的进程,我们经常用iostat工具查看进程IO请求下发的数量.系统处理IO请求的耗时,进而分析进程与操作系统的交互过程中IO方面是否存在瓶颈. 下面通过iostat命令使用实例,说明使用iostat查看IO请求下发情况.系统IO处理能力的方法,以及命令执行结果中各字段的含义. 1.不加选项执行iostat 我们先来看直接执行iostat的输出结果: linux # iostat Linux 2.6.16.60-0.21-smp (linux) 06/12/12 avg-c

CloudDBA最佳实践-TOP SQL优化分析数据库性能问题

    云数据库CloudDBA诊断报告的TOP SQL优化是非常实用的功能,我们可以通过TOP SQL去诊断数据库中各种问题,比如性能出现下降,数据库压力出现波动,下面介绍两个线上生产案例.     一. 利用CloudDBA TOP SQL找出数据库规格升级而性能下降的元凶     最近在协助用户进行系统重构,RDS测试选型自然成为了本项目的一个重点,但是用户在测试不同规格的时候发现大规格的实例性能居然不如小规格,4C32G规格性能比8C64G规格高出10%,其性能监控也是非常的正常,4C3

MongoDB · 特性分析 · 网络性能优化

从 C10K 说起 对于高性能即时通讯技术(或者说互联网编程)比较关注的开发者,对C10K问题(即单机1万个并发连接问题)应该都有所了解.『C10K』概念最早由 Dan Kegel 发布于其个人站点,即出自其经典的<The C10K problem>一文[1]. 于是FreeBSD推出了kqueue,Linux推出了epoll,Windows推出了IOCP.这些操作系统提供的功能就是为了解决C10K问题. 常用网络模型 方案 名称 接受连接 网络 IO 计算任务 1 thread-per-co