Phalcon + PHPUnit + DI:数据库连接太多

时间:2014-10-06 18:18:24

标签: mysql phpunit phalcon

我将PHPUnit与Phalcon一起使用。在我的UnitTestCase(基础测试类)中,我设置了连接:

protected function setUp(\Phalcon\DiInterface $di = null, \Phalcon\Config $config = null)
{
    $dbparams = ...

    if (is_null($di)) {
        $di = new \Phalcon\DI\FactoryDefault();
    }

    $di->setShared('db', function() use ($dbconfig) {
        return new \Phalcon\Db\Adapter\Pdo\Mysql($dbparams);
    });

    \Phalcon\DI:setDefault($di);

    parent::setUp($di, $this->_config);

    $this->_loaded = true;
}

我遇到了一个问题,在运行了多个套件之后,我开始出现以下错误(在某一点之后的每一个测试用例):

PDOException: SQLSTATE[HY000] [1040] Too many connections

我做错了吗?

1 个答案:

答案 0 :(得分:2)

因此,您只需继续为每个测试用例添加新连接。由于PHPUnit运行单个PHP进程,因此没有任何数据库连接被垃圾收集。 PHP进程只会累积打开的连接,直到超出数据库实例的max_connections值。

如果您打开与MySQL的会话并不时运行SHOW PROCESSLIST,您可能会观察到连接数量的增长。

您需要在PHPUnit tearDown()方法中断开与数据库的连接。