我正在将PHPUnit与Phalcon一起使用。在我的UnitTestCase(基本测试类)中,我这样设置了连接:
protected function setUp(PhalconDiInterface $di = null, PhalconConfig $config = null)
{
$dbparams = ...
if (is_null($di)) {
$di = new PhalconDIFactoryDefault();
}
$di->setShared('db', function() use ($dbconfig) {
return new PhalconDbAdapterPdoMysql($dbparams);
});
PhalconDI:setDefault($di);
parent::setUp($di, $this->_config);
$this->_loaded = true;
}
我遇到了一个问题,在运行了许多套件之后,我开始得到以下错误(在特定点之后的每个测试用例上):
PDOException: SQLSTATE[HY000] [1040] Too many connections
我做错什么了吗?
因此,您只需不断为每个测试用例添加新的连接。由于PHPUnit运行一个PHP进程,因此没有任何数据库连接是垃圾收集的。PHP进程只是不断累积打开的连接,直到超过数据库实例的max_connections
值。
如果您打开到MySQL的会话并不时运行SHOW PROCESSLIST
,您可能会观察到连接数量的增长。
您需要在PHPUnit tearDown()
方法中断开与数据库的连接。