【问题标题】:Improve Xdebug performance提高 Xdebug 性能
【发布时间】:2015-04-05 13:50:19
【问题描述】:

我发现了很多文章和关于此的帖子,甚至在 stackexchange 网站上,我只想确定,这是最大的,我可以从 xDebug 得到什么。

我的场景:

我正在本地主机上开发一个 wordpress 站点。每次,当xDebug打开时,当我想加载一个页面时,服务器响应是7-8秒。您可以想象,当您开发时,这是多么令人沮丧,并且您需要多次重新加载页面。

如果我关闭它,(从php.ini 注释掉)它会减少到 1-2 秒。

你看到什么了吗,我在我的配置中做了什么设置不好?如果没有,您能否建议我进行任何设置以提高服务器响应时间的速度?

如果它可以是 3-4 秒,一个带有xDebug 的服务器响应,那就太好了。谢谢。

我的环境是:

机器

  • IBM Thinkpad T410 i5 CPU 2.40Ghz
  • 8GB 内存
  • 64 位
  • Windows 7 Ultimate 64 位 SP1

软件

  • Apache/2.4.2 (Win64) OpenSSL/1.0.1c
  • PHP 版本 5.6.5 x64
  • 10.0.16-MariaDB(MySql 分支)

我的 xDebug 配置:

  • zend.enable_gc = 开启
  • report_zend_debug = 0
  • output_buffering = 关闭

  • zend_extension = D:\PHP\ext\php_xdebug-2.2.7-5.6-vc11-x86_64.dll

  • xdebug.remote_enable=1
  • xdebug.remote_host=127.0.0.1
  • xdebug.remote_autostart = 0
  • xdebug.remote_connect_back = 0
  • xdebug.profiler_enable = 0
  • xdebug.remote_mode=req
  • xdebug.remote_port=9000
  • xdebug.remote_handler=dbgp
  • xdebug.overload_var_dump = 1;
  • xdebug.cli_color = 2
  • xdebug.show_exception_trace=1
  • xdebug.auto_trace=1
  • xdebug.var_display_max_children = -1
  • xdebug.var_display_max_data = -1
  • xdebug.var_display_max_depth = -1

【问题讨论】:

  • 你实际使用 xdebug 是为了什么?它是一个调试工具。调试时执行速度应该不重要,不调试时不需要使用xdebug
  • 这似乎很有趣,但我正在使用 xdebug 进行调试。我不想总是注释掉,并从我的 php.ini 中删除 cmets,然后重新启动 apache。我正在使用 Netbeans 和 Firefox 开发者版。当在 Netbeans 中没有开始调试,在 FF 中没有开始调试时,它也很慢,这是我的问题。当我注释掉 xdebug 时,它会变快。
  • 可能是windows的东西?我从未见过仅仅因为启用了 xdebug 而导致性能如此糟糕的情况。
  • 这可能是一个Windows的东西。我公司至少有两个开发人员在启用 xdebug 的情况下性能不佳……在 Win 8.1 和 Win 10 上升级到 5.6 后出现。有一个错误报告 bugs.xdebug.org/view.php?id=1177

标签: php performance xdebug


【解决方案1】:

我遇到了一些类似的问题,所以我决定写一个小脚本来切换 Xdebug。

希望它对您或其他人有所帮助...所以就在这里..

#!/bin/bash

xdebugPath="/etc/php5/mods-available/xdebug.ini";
apacheRestartCommand="service apache2 reload";

showUsageMessage(){
        echo "Usage: xdebug {on|off|status}";
}

enableDebugger(){
        printf "Enabling X-debug...\r\n";
        sed  -i -e "s/^;xdebug/xdebug/g" "${xdebugPath}";
        sed  -i -e "s/^;zend/zend/g" "${xdebugPath}";
        printf "Restarting Apache...\r\n";
        ${apacheRestartCommand};
        printf "Done\r\n\r\b";
}

disableDebugger(){
        printf "Disabling X-debug\r\n";
        sed -i -e "s/^xdebug/;xdebug/g" "${xdebugPath}";
        sed -i -e "s/^zend/;zend/g" "${xdebugPath}";
        printf "Restarting Apache...\r\n";
        ${apacheRestartCommand};
        printf "Done\r\n\r\n"
}

showStatus(){
        status=$(getStatus);
        if [[ ${status} = 1 ]]; then
                echo "X-debug seems to be enabled";
        else
                echo "X-debug seems to be disabled";
        fi
}

getStatus(){
        local __result=1

        while IFS="" read -r line || [[ -n "$line" ]]; do
                if [[ ${line} == ";"* ]]; then
                        __result=0;
                fi
        done < ${xdebugPath}

        echo "$__result";
}

if [ $# = 1 ]; then
    if [ $1 == "on" ];then
    enableDebugger;
    elif [ $1 == "off" ];then
        disableDebugger;
    elif [ $1 == "status" ];then
        showStatus;
    else
        showUsageMessage;
    fi
else
    showUsageMessage;
fi

将上面的文本保存在一个名为xdebug 的新文件中并将其标记为可执行文件:chmod +x xdebug

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 2021-12-18
    • 2011-05-07
    • 2016-04-19
    • 2016-10-07
    • 2011-04-08
    • 2022-01-06
    相关资源
    最近更新 更多