我在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()
方法从数据库断开连接。