php - 如何找到为什么 phpunit testsuite 使用 xdebug 太慢?

标签 php phpunit xdebug output-buffering

phpMyAdmin我们经历了一段时间奇怪的测试套件减速。我们已经能够将问题追溯到启用 xdebug(用于代码覆盖)并且 ob_start/ob_end_clean block 内有错误的情况。删除其中任何一个都可以大大减少测试套件的时间。

                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 中的一些错误,但我们无法生成比上面更小的测试用例,这听起来很可疑。有什么想法可以进一步调试问题,以及如何找出真正导致这种速度下降的原因吗?

最佳答案

由于探查器处于打开状态,我遇到了这个问题,它也会生成巨大的 cachegrind 文件。

检查 xdebug.profiler_enable = 0

> documentation

关于php - 如何找到为什么 phpunit testsuite 使用 xdebug 太慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11503323/

相关文章:

php - 在整数上调用成员函数 toSql()

php - 我如何告诉 poedit 忽略非 ASCII 文本错误?

php - 为什么我的电子邮件没有从使用 PHP 的订单成功页面发送

php - 如何在 PHPUnit 中 stub 更复杂的方法

php - phpunit selenium2 扩展中的显式等待

javascript - 删除(取消设置)今天之前创建的所有较旧的 cookie 并在浏览器历史记录中保留子目录?

xml - 如何轻松调试布局 Xml 警告/错误?

linux - 使用php5.3安装xdebug

php - 使用 XDebug 跟踪 PHP Web 服务页面

PHPUnit:模拟 PDOException->getMessage() 方法