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 处理图片的类实现代码
Oct 23 PHP
PHP中常用的输出函数总结
Sep 22 PHP
php实现的农历算法实例
Aug 11 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
Dec 10 PHP
PHP中spl_autoload_register()函数用法实例详解
Jul 18 PHP
PHP上传图片、删除图片简单实例
Nov 12 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
Jul 27 PHP
php连接MSsql server的五种方法总结
Mar 04 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 18 PHP
php数组遍历类与用法示例
May 24 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
Mar 02 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
Mar 26 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
一段php加密解密的代码
2007/07/16 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
Laravel与CI框架中截取字符串函数
2016/05/08 PHP
2017年最新PHP经典面试题目汇总(上篇)
2017/03/17 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
javascript读取RSS数据
2007/01/20 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
javaScript中封装的各种写法示例(推荐)
2017/07/03 Javascript
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
浅谈小程序globalData的那些事儿
2019/11/01 Javascript
vue实现轮播图帧率播放
2021/01/26 Vue.js
[01:25]2015国际邀请赛最佳短片奖——斧王《拆塔英雄:天赋异禀》
2015/09/22 DOTA
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
对Python新手编程过程中如何规避一些常见问题的建议
2015/04/01 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
科颜氏加拿大官方网站: Kiehl’s加拿大
2016/08/16 全球购物
西安当代医院管理研究院笔试题
2015/12/11 面试题
人力资源经理自我评价
2014/01/04 职场文书
《猴子种树》教学反思
2014/02/14 职场文书
工商管理专业毕业生求职信
2014/05/26 职场文书
学校班班通实施方案
2014/06/11 职场文书
建筑院校毕业生求职信
2014/06/13 职场文书
聚会通知怎么写
2015/04/23 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
使用 JavaScript 制作页面效果
2021/04/21 Javascript