在生产服务器上启用 XDebug 会使 PHP 变慢吗?

标题几乎说明了一切...这是一个坏主意吗?我希望在服务器上拥有XDebug提供的增强调试消息。

[编辑]只是为了把事情说清楚。我知道这其中涉及安全风险。也许我应该补充我的问题,并给出我为什么要这样做的更确切的理由。

我们的生产服务器还托管一个测试平台。有时,我们用它来在尽可能接近生产的环境中进行测试。我正在寻找的主要内容是使用XDebug的增强版。var_dump()

这不是高流量应用程序的应用程序服务器,性能也不是一个大问题。我只是好奇性能是否会受到XDebug的明显影响。

此外,我想我只能为定义测试站点的VirtualHost启用它。


答案 1

除了调试消息无法在已经投入生产的应用程序中显示的明显事实,以及我不知道为什么你会喜欢这一点之外,还有一些非常糟糕的事情。

第一个是,当您向服务器添加调试行为时,调试引擎“附加”到PHP进程并接收引擎的消息以在断点处停止,这是不好的,因为引入了高性能打击,使另一个进程停止或“保留”PHP解析器。

另一个大问题是,当安装调试器时,至少大多数调试器,它们往往会有在服务器中打开端口的令人讨厌的习惯,因为它们不适用于生产环境,并且您可能知道,任何在服务器中打开端口的软件都为周围的任何黑客打开了一扇门。

如果需要在代码中进行调试,则在应用程序中实现调试系统(如果不可用),因为大多数框架都内置了此功能。设置一个配置值,比如DEBUG_ENABLED,当引发异常时,如果未启用,则重定向到小页面,否则重定向到包含调试信息的丑陋页面,但要注意在服务器中显示的调试信息。我希望这能澄清一切。

编辑由于显然我的回答没有得到充分的记录,你应该检查这些来源

最后,有一件事我没有说,因为我认为这是隐含的:这是常识不这样做!您不会将调试工具放在生产服务器上,原因与将它们放在不同的环境中的原因相同,因为您需要将不必要的东西远离它。在服务器上运行的任何进程,无论它有多轻,都会影响您的性能。


答案 2

减慢系数 4

我做了一些测试,只是启用模块,而没有实际调试,使我的开发计算机上的请求从1秒减慢到大约4秒


推荐