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 相关文章推荐
数据库相关问题
Oct 09 PHP
用PHP查询域名状态whois的类
Nov 25 PHP
开源SNS系统-ThinkSNS
May 18 PHP
php中CI操作多个数据库的代码
Jul 05 PHP
PHP设置进度条的方法
Jul 08 PHP
php实现给一张图片加上水印效果
Jan 02 PHP
一个简单安全的PHP验证码类、PHP验证码
Sep 24 PHP
PHP中include()与require()的区别说明
Feb 14 PHP
PHP5.6新增加的可变函数参数用法分析
Aug 25 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
PHP封装curl的调用接口及常用函数详解
May 31 PHP
浅析PHP7的多进程及实例源码
Apr 14 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
给海燕B411配件机起死回生配上件
2021/03/02 无线电
做一个有下拉功能的留言版
2006/10/09 PHP
dedecms中常见问题修改方法总结
2007/03/21 PHP
深入Nginx + PHP 缓存详解
2013/07/11 PHP
用PHP实现弹出消息提示框的两种方法
2013/12/17 PHP
php目录操作实例代码
2014/02/21 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
PHP读取大文件的多种方法介绍
2016/04/04 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
判断脚本加载是否完成的方法
2009/05/26 Javascript
javascript拓展DOM操作 prependChild insertAfert
2010/11/17 Javascript
javascript简单性能问题及学习笔记
2014/02/04 Javascript
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
AngularJS入门教程(一):静态模板
2014/12/06 Javascript
jQuery实现鼠标划过展示大图的方法
2015/03/09 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
NodeJS配置HTTPS服务实例分享
2017/02/19 NodeJs
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
2019/01/05 jQuery
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
Python中内建函数的简单用法说明
2016/05/05 Python
python实现自动发送报警监控邮件
2018/06/21 Python
给我一面国旗 python帮你实现
2019/09/30 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
西班牙家用电器和电子产品购物网站:Mi Electro
2019/02/25 全球购物
预订旅游活动、景点和旅游:GetYourGuide
2019/09/29 全球购物
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
创建索引时需要注意的事项
2013/05/13 面试题
餐饮收银员岗位职责
2014/02/07 职场文书
成龙洗发水广告词
2014/03/14 职场文书
增员口号大全
2014/06/18 职场文书
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python