我将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
我做错了吗?
答案 0 :(得分:2)
因此,您只需继续为每个测试用例添加新连接。由于PHPUnit运行单个PHP进程,因此没有任何数据库连接被垃圾收集。 PHP进程只会累积打开的连接,直到超出数据库实例的max_connections
值。
如果您打开与MySQL的会话并不时运行SHOW PROCESSLIST
,您可能会观察到连接数量的增长。
您需要在PHPUnit tearDown()
方法中断开与数据库的连接。