我在Phalcon中使用PHPUnit。在我的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


难道我做错了什么?

最佳答案

因此,您只需为每个测试用例添加新的连接。由于PHPUnit运行单个PHP进程,因此不会对所有数据库连接进行垃圾收集。在您超过数据库实例的max_connections值之前,PHP进程只会不断累积打开的连接。

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

您需要使用PHPUnit tearDown()方法从数据库断开连接。

08-19 03:08