在phpMyAdmin中,我们经历了一段时间奇怪的测试套件放缓。我们已经能够将问题追溯到启用xdebug(用于代码覆盖)并且ob_start/ob_end_clean块内出现错误的情况。删除其中任何一个都会大大减少测试套件的时间。
xdebug enabled disabled
ob_start failure tests
enabled 20 min 15 s
disabled 1 min 15 s
这只是为了表明差异有多大,以及我们为什么要消除这种差异。
在较小的规模下,这可以用单个测试test/classes/PMA_Advisor_test.php
:来显示
xdebug enabled disabled
ob_start failure tests
enabled 7.2 s 0.1 s
disabled 2.6 s 0.1 s
这里的区别是为一个测试删除了单个数据集(如果您要查看源,这是最后一个数据集),并导致测试花费不到一半的时间!更新:在这种特殊情况下,使用xdebug.default_enable=0
可以减轻问题,但对于整个测试套件来说,这并没有太大变化。
乍一看,它确实看起来像xdebug中的一些bug,但我们一直无法生成比上面更小的测试用例,这听起来很可疑。有什么想法吗?如何进一步调试这个问题,以及如何找出真正导致速度减慢的原因?
我遇到了这个问题,因为探查器正在运行,它还会生成巨大的cachegrind文件。
检查xdebug.profile_enable=0
>文档
我的测试很慢,因为我出于某种原因启用了show_local_vars,现在我记不清了。http://xdebug.org/docs/all_settings希望这些信息会有所帮助。