xdebug是什么
xdebug是PHP的一个插件,可用于分析PHP程序的性能以及变量,这样就可以不在代码里各种echo,var_dump来调试代码
xdebug的安装
上面也说过,xdebug是PHP的插件,自然也是插件的安装方法,不过xdebug的版本需要注意
具体安装的教程地址:https://blog.youkuaiyun.com/alan8865/article/details/81331252
因为其他人已经写过,这里不再赘述,直接引用了
xdebug配置
安装完xdebug,就需要配置了,这里主要说下直接在服务器上生成分析文件并直接用代码分析
配置文件 php.ini
配置如下
[Xdebug]
;断点调试
;xdebug.auto_trace=1 ;启用代码自动跟踪 不建议开启,每次访问就会生成一个分析文件,产生文件太多
xdebug.collect_vars=1 ;收集变量
xdebug.collect_return=1 ;收集返回值
xdebug.collect_params=4 ;收集参数
xdebug.trace_output_dir="/tmp/xdebug" ;断点调试输出地址
xdebug.trace_output_name=yunke.%p.%H ;文件名格式
xdebug.trace_enable_trigger=1 ;只有接收到XDEBUG_TRACE变量才会追踪
xdebug.trace_enable_trigger_value="yunke" ;XDEBUG_TRACE变量值
xdebug.show_mem_delta=1 ;输出格式,这个是人类可读性跟踪信息
;性能分析
;xdebug.profiler_enable=on ;自动生成性能文件,不建议开启,每次访问就会生成一个分析文件,产生文件太多
xdebug.profiler_enable_trigger=1 ;只有接收到XDEBUG_PROFILE=1才会生成报告
xdebug.profiler_output_dir="/tmp/xdebug"
xdebug.profiler_output_name=cachegrind.out.%p.%H
那么访问地址如何写呢
浏览器直接访问 http://你的域名/***.php?XDEBUG_TRACE=yunke&XDEBUG_PROFILE=1
就会在/tmp/xdebug这里面生成
xdebug文件分析
生成了之后,我们要如何查看分析结果
首先,访问了我们写的代码之后,会生成两个文件,一个是cachegrind.out.***和一个***.xt
第一个就是我们的性能分析文件,第二个是我们的断点调试文件
首先先讲断点调试文件
这个文件是***.xt
里面的内容如下:
TRACE START [2020-01-27 15:14:55]
0.0006 402352 +402352 -> {main}() /www/www.yzb.com/test2.php:0
0.0006 402352 +0 -> show($params = 0) /www/www.yzb.com/test2.php:13
0.0006 402352 >=> 0
0.0006 402352 +0 -> show2($params = 0) /www/www.yzb.com/test2.php:14
0.0007 402352 >=> 0
0.0007 402352 +0 -> show($params = 1) /www/www.yzb.com/test2.php:13
0.0007 402352 >=> 1
0.0007 402352 +0 -> show2($params = 1) /www/www.yzb.com/test2.php:14
0.0007 402352 >=> 1
0.0007 402352 +0 -> show($params = 3) /www/www.yzb.com/test2.php:13
0.0007 402352 >=> 3
0.0007 402352 +0 -> show2($params = 3) /www/www.yzb.com/test2.php:14
0.0007 402352 >=> 3
可以看到函数调用,变量值,返回值等信息
>=> 3 这种是函数返回
性能文件分析
性能分析文件是cachegrind.out.***
内容如下:
version: 1
creator: xdebug 2.9.0 (PHP 7.4.0)
cmd: /www/www.yzb.com/test2.php
part: 1
positions: line
events: Time Memory
fl=(1) /www/www.yzb.com/test2.php
fn=(1) show
18 2 0
fl=(1)
fn=(2) show2
26 0 0
fl=(1)
fn=(1)
18 0 0
fl=(1)
fn=(2)
26 0 0
如果这样看,我也看不懂,这时候需要借助工具,在自己的服务器上搭建一个网址,比如路径是 /www/www.analyse.com/,然后
git clone https://github.com/jokkedk/webgrind.git
下载完这个网站代码之后
修改配置
vim /www/www.analyse.com/webgrind/config.php
修改里面的
static $storageDir = '/tmp/webgrind';
static $profilerDir = '/tmp/xdebug';
然后配置nginx让其可以被访问
访问 http://www.analyse.com/webgrind/index.php
页面如下
箭头处是选择哪个文件分析
这里注意的是,需要把php.ini 里的display_error改为off,要不然会看不到分析报告
结语
自此,xdebug环境搭建完毕,这里需要讲的是,xdebug最好是放在测试机上,因为很消耗性能,线上容易受影响,所以,最好在自己的机器或者测试配置xdebug