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 5.3.5安装memcache注意事项小结
Apr 12 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
Jul 05 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
Nov 25 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
Mar 03 PHP
fckeditor上传文件按日期存放及重命名方法
May 22 PHP
PHP中的表达式简述
May 29 PHP
php判断是否为ajax请求的方法
Nov 29 PHP
php简单读取.vcf格式文件的方法示例
Sep 02 PHP
利用php获得flv视频长度的实例代码
Oct 26 PHP
yii2 url重写并隐藏index.php方法
Dec 10 PHP
PHP7 windows支持
Mar 09 PHP
详解PHP设计模式之依赖注入模式
May 25 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教程 基本语法
2009/10/23 PHP
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
2011/05/18 PHP
PHP定时执行计划任务的多种方法小结
2011/12/19 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
2015/09/23 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
JS查看对象功能代码
2008/04/25 Javascript
script不刷新页面的联动前后代码
2013/09/18 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
Electron vue的使用教程图文详解
2019/07/05 Javascript
vue实现element表格里表头信息提示功能(推荐)
2019/11/20 Javascript
举例讲解Python中装饰器的用法
2015/04/27 Python
Python ftp上传文件
2016/02/13 Python
python使用matplotlib绘图时图例显示问题的解决
2017/04/27 Python
Python实现获取命令行输出结果的方法
2017/06/10 Python
python3 pandas 读取MySQL数据和插入的实例
2018/04/20 Python
Python3基于sax解析xml操作示例
2018/05/22 Python
Django使用Mysql数据库已经存在的数据表方法
2018/05/27 Python
python 将字符串完成特定的向右移动方法
2019/06/11 Python
python线程的几种创建方式详解
2019/08/29 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
使用HTML5和CSS3表单验证功能
2017/05/05 HTML / CSS
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
html5 外链式实现加减乘除的代码
2019/09/04 HTML / CSS
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
视图的作用
2014/12/19 面试题
《再别康桥》教学反思
2014/02/12 职场文书
公司请假条格式
2014/04/11 职场文书
退货证明模板
2015/06/23 职场文书
大学新生入学感想
2015/08/07 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书