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 相关文章推荐
fleaphp crud操作之findByField函数的使用方法
Apr 23 PHP
php中配置文件操作 如config.php文件的读取修改等操作
Jul 07 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 PHP
PHP中对缓冲区的控制实现代码
Sep 29 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
Nov 26 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
Oct 31 PHP
详解PHP中的mb_detect_encoding函数使用方法
Aug 18 PHP
抛弃 PHP 代价太高
Apr 26 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
Sep 23 PHP
php实现查询功能(数据访问)
May 23 PHP
php使用curl下载指定大小的文件实例代码
Sep 30 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
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
php $_SESSION会员登录实例分享
2021/01/19 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
js 加载并解析XML字符串的代码
2009/12/13 Javascript
JavaScript将页面表格导出为Excel的具体实现
2013/12/27 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
JavaScript中Date.toSource()方法的使用教程
2015/06/12 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
[28:48]《真视界》- 2017年国际邀请赛
2017/09/27 DOTA
Python运行的17个时新手常见错误小结
2012/08/07 Python
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
python文件名和文件路径操作实例
2017/09/29 Python
高质量Python代码编写的5个优化技巧
2017/11/16 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
2020/03/03 Python
python字典的值可以修改吗
2020/06/29 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
介绍一下gcc特性
2012/01/20 面试题
贷款担保书范文
2014/05/13 职场文书
给校长的建议书100字
2014/05/16 职场文书
暑期培训班招生方案
2014/08/26 职场文书
师德师风剖析材料
2014/09/30 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python