PHP调试及性能分析工具Xdebug详解


Posted in PHP onFebruary 09, 2017

程序开发过程中,一般用得最多的调试方法就是用echo、print_r()、var_dump()、printf()等将语句打印出来。对PHP脚本的执行效率,通常是脚本执行时间。对数据库SQL的效率,通常是数据库Query时间,但这样并不能真正定位和分析脚本执行和数据库查询的瓶颈所在?对此,有一个叫Xdebug(www.xdebug.org)的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况。

一、以windows平台对此模块的安装做简单的介绍:

1. 下载PHP的XDebug扩展,网址:http://xdebug.org/(这个根据你目前使用的PHP版本而定);

2. 将下载的模块(php_xdebug-2.0.5-5.2.dll)放到PHP的安装的 ext 目录下;

3. 配置php.ini文件,将以下几行添加

**************************************

extension=php_xdebug-2.0.5-5.2.dll
[Xdebug]
xdebug.profiler_enable=on
xdebug.trace_output_dir="E:/Projects/xdebug" #放置Xdebug输出的数据文件的目录
xdebug.profiler_output_dir="E:/Projects/xdebug"
********************************************************

4. 重启Apache服务器。完成!!!

5. <?php echo phpinfo();?>如果输出的内容中有看到xdebug,说明安装配置成功。

6. 在Windows平台下,可以用客户端(Windows):WinCacheGrind WinCacheGrind 这个软件来打开这些文件。可以更直观地显示其中内容:

二、以Linux平台作简单的介绍:

1. 在Linux下编译安装XDebug

[root@localhost src]# tar -xvf xdebug-2.0.5
[root@localhost xdebug-2.0.5]# /usr/local/php/bin/phpize
[root@localhost xdebug-2.0.5]# ./configure --enable-xdebug --with-php-config=/usr/locar/php/bin/php-config
[root@localhost xdebug-2.0.5]# make
可以将生成的 xdebug.so 拷贝到 extension_dir 所指向的路径目录。

2. 配置

vi /usr/local/php/lib/php.ini 修改php.ini,去除PHP加速模块,增加以下配置信息支持XDebug扩展
#extension=vld.so  //是输出OPCODES的模块
extension=xdebug.so
[Xdebug]
xdebug.profiler_enable=on
xdebug.trace_output_dir="/tmp/xdebug"
xdebug.profiler_output_dir="/tmp/xdebug"
xdebug.profile_output_name="script"

注:也可使用 [root@localhost xdebug-2.0.5]# /usr/local/php/bin/php -m 列出所有的扩展模块

3. 重启WEB服务器

[root@localhost xdebug-2.0.5]# service httpd restart      OK!!!

Xdebug工具会将跟踪的错误信息以日记的形式写入到输出的数据文件中,可以文件去查看,但为了更直观,还有一个图形界面的工具来分析跟踪的日记记录。WinCacheGrind (wincachegrind.souceforge.net)此软件直接安装就行,从图形窗口中可以将整个程序的结构,每个函数被调用的次数,执行时间都一目了然。很专业很方便!!!

总结:Xdebug可以跟踪程序的运行,通过对日志文件的分析,我们可以迅速找到程序运行的瓶颈所在,提高程序效率,从而提高整个系统的性能。

以上这篇PHP调试及性能分析工具Xdebug详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php购物网站支付paypal使用方法
Nov 28 PHP
兼容性比较好的PHP生成缩略图的代码
Jan 12 PHP
PHP面向接口编程 耦合设计模式 简单范例
Mar 23 PHP
利用curl抓取远程页面内容的示例代码
Jul 23 PHP
php获取数组长度的方法(有实例)
Oct 27 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
Feb 02 PHP
PHP批量生成静态HTML的简单原理和方法
Apr 20 PHP
php结合web uploader插件实现分片上传文件
May 10 PHP
php阳历转农历优化版
Aug 08 PHP
php curl 模拟登录并获取数据实例详解
Dec 22 PHP
浅谈PHP中类和对象的相关函数
Apr 26 PHP
Yii 2中的load()和save()示例详解
Aug 03 PHP
php从身份证获取性别和出生年月
Feb 09 #PHP
Yii2框架实现数据库常用操作总结
Feb 08 #PHP
Yii2实现中国省市区三级联动实例
Feb 08 #PHP
PHP+Ajax无刷新带进度条图片上传示例
Feb 08 #PHP
PHP中的使用curl发送请求(GET请求和POST请求)
Feb 08 #PHP
php制作基于xml的RSS订阅源功能示例
Feb 08 #PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
Feb 08 #PHP
You might like
WordPress判断用户是否登录的代码
2011/03/17 PHP
PHP设计模式之解释器模式的深入解析
2013/06/13 PHP
php自定义函数截取汉字长度
2014/05/15 PHP
php计算一个文件大小的方法
2015/03/30 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
关于使用runtimeStyle属性问题讨论文章
2007/03/08 Javascript
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
JS 获取滚动条高度示例代码
2013/10/24 Javascript
javascript引用类型指针的工作方式
2015/04/13 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
基于Angularjs实现分页功能
2016/05/30 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
几种tab切换详解
2017/02/03 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
js数组去重的N种方法(小结)
2018/06/07 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
Python import自定义模块方法
2015/02/12 Python
python构建基础的爬虫教学
2018/12/23 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
python实现梯度下降和逻辑回归
2020/03/24 Python
详解html2canvas截图不能截取圆角图片的解决方案
2018/01/30 HTML / CSS
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
来自Ocado的宠物商店:Fetch
2018/07/10 全球购物
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
2014自主招生自荐信策略
2014/01/27 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
2016元旦晚会主持人开场白和结束语
2015/12/03 职场文书
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技
MySQL去除密码登录告警的方法
2022/04/20 MySQL
pandas中pd.groupby()的用法详解
2022/06/16 Python