PHP xdebug 调试代码

测试环境接口响应非常慢 4到5秒钟
接口内有两次 curl 请求 局域网接口 通过常规日志监控不是很给力呀

使用xdebug 搞搞

#先确认php是否装有xdebug 扩展
php --ri xdebug 

#创建xdebug文件夹
mkdir /tmp/debug && chmod 777 -R /tmp/debug


# 修改配置
vim /etc/opt/remi/php72/php.d/15-xdebug.ini

xdebug.auto_trace=off
xdebug.trace_enable_trigger=on
xdebug.trace_output_dir="/tmp/debug"

#通过设置collect_params选项值为3开启参数记录
xdebug.collect_params=3
于是跑一趟代码下来,调试信息文件内容就是这样的,看到了吧,函数的括号里多了参数,而没有开启collect_params时函数后面只有一个空括号的
# 重启 apache 或 php-fpm
/etc/ini.d/php-fpm restart

准备工作就绪

因为是个别接口 所以必须关闭 `xdebug.auto_trace=off` 开启 `xdebug.trace_enable_trigger=on`

举个栗子:

    
    <?php
            
        xdebug_start_trace(); //开始记录回溯

        # code ... 需要回溯的代码

        xdebug_stop_trace(); //结束记录回溯

输出日志如下

TRACE START [2018-10-12 05:29:59]
    0.2169     978016             -> APP::checkParams() /u
    0.2169     978016               -> strpos() /usr/share
    0.2169     978016               -> explode() /usr/shar
    0.2169     978088               -> APP::getRequest() /
    0.2169     978088               -> CodeIgniter\HTTP\In
    0.2169     978088                 -> CodeIgniter\HTTP\
    0.2169     978088                   -> is_null() /usr/
    0.2170     978088                   -> is_null() /usr/
    0.2170     978088                   -> is_array() /usr
    0.2170     978112                   -> preg_match_all(
    0.2170     978904                   -> is_array() /usr
    0.2170     978904                   -> is_object() /us
    0.2170     978904                   -> is_null() /usr/
    0.2170     978904                   -> filter_var() /u
    0.2170     978344               -> intval() /usr/share
    0.2170     978424               -> strpos() /usr/share
    0.2171     978424               -> APP::getRequest() /
    0.2171     978424               -> CodeIgniter\HTTP\In
    0.2171     978424                 -> CodeIgniter\HTTP\
    0.2171     978424                   -> is_null() /usr/
    0.2171     978424                   -> is_null() /usr/
    0.2171     978424                   -> is_array() /usr
    0.2171     978448                   -> preg_match_all(
    0.2171     979232                   -> is_array() /usr
    0.2171     979232                   -> is_object() /us
    0.2171     979232                   -> is_null() /usr/
    0.2171     979232                   -> filter_var() /u
    0.2172     978680               -> trim() /usr/share/n
    0.2172     978272             -> APP::getUserInfo() /u
    0.2172     978272             -> FileLog::l() /usr/sha
    0.2172     978272               -> FileLog::logs() /us
    0.2172     978648                 -> date() /usr/share
    0.2172     978904                 -> FileLog::append()
    0.2172     978904                   -> is_numeric() /u
    0.2173     979336             -> APP::uid() /usr/share
    0.2173     979712             -> FileLog::l() /usr/sha
    0.2173     979712               -> FileLog::logs() /us
    0.2173     980088                 -> date() /usr/share
    0.2173     980344                 -> FileLog::append()
    0.2173     980344                   -> is_numeric() /u
    0.2173     980760                   -> is_numeric() /u

发表新评论