【问题标题】:After enabling Xdebug PHP runs incredibly slowly启用 Xdebug 后,PHP 运行速度非常慢
【发布时间】:2015-10-31 04:23:53
【问题描述】:

我已在我的 PC(使用 Windows 10)上安装了 Apache 2.4 和 PHP 5.6。

启用 Xdebug 后,PHP 的运行速度比没有 Xdebug 时慢 10 倍(!)。

这是php.ini 配置:

zend_extension = "php_xdebug-2.3.3-5.6-vc11-x86_64.dll"
xdebug.remote_autostart = 0
xdebug.profiler_enable = 0
xdebug.profiler_output_dir = "C:\PHP\tmp"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_mode=req
xdebug.remote_host = "127.0.0.1"
xdebug.remote_port=9000
xdebug.idekey=netbeans-xdebug
xdebug.trace_output_dir = "C:\PHP\tmp"
xdebug.auto_trace = 0
xdebug.var_display_max_depth = 3
xdebug.remote_connect_back = 0

我已确保禁用分析器和自动启动。 有谁知道这种行为的原因是什么?

【问题讨论】:

  • 这很正常。我认为
  • 只有在您的代码中有大量错误时这才是正常的。因此,请检查 php 错误日志,尤其是当您停止 PHP 向屏幕显示错误时。我打赌你会发现一大堆错误
  • 奇怪的是,当 xdebug 被禁用时它会减慢它的速度。我肯定已经看到在函数或对象繁重的代码中启用 xdebug 会大大降低速度,但我不希望禁用它时会出现这种减速。
  • 这不正常,因为我在 Linux 和 Windows 7 上没有看到这样的问题。在这些系统上,xdebug 使 php 的速度减慢不超过 2 倍。
  • 更新到 PHP 5.6 (Win 8.1) 后我遇到了同样的问题

标签: php xdebug php-5.6


【解决方案1】:

来源:https://www.phase2technology.com/blog/profiling-production-whats-slowing-you-down

使用解释性语言(如 PHP 和 Javascript)的工具涉及到挂钩到运行时并在发生时显式收集有关每个函数调用的信息。这允许您查看已用时间、堆栈中函数调用的调用图、内存和 CPU 统计信息,以及代码在每个请求上执行时的其他系统数据。然而,仪表化分析确实增加了开销,而且可能很重要。这取决于您的应用程序的复杂性。这使得仪表化分析非常适合开发和调试会话,但对于持续的生产分析和监控来说是有限的。

检测的一个很好的替代方法是基于样本的分析。

基于样本的分析涉及以固定的时间间隔拍摄应用程序的快照。每个快照记录当前执行的函数,这些快照的聚合用于估计代码中花费的时间和地点。这提供的细节比仪器分析少得多,但没有显着增加的开销,因此非常适合生产使用。

查看sample_prof 以获取使用 PHP 进行基于样本的分析的示例。

【讨论】:

    猜你喜欢
    • 2012-11-05
    • 2015-11-21
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 2014-08-28
    • 2011-08-16
    相关资源
    最近更新 更多