2014-10-06 38 views
0

我正在使用PHPUnit和Phalcon。在我UnitTestCase(基础测试类),我已经建立了这样的连接:我遇到了一个问题,在那里,是办好一批套房后,我开始明白了Phalcon + PHPUnit + DI:太多的db连接

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 

我做错了什么?

回答

2

所以你只是不断增加每个测试用例的新连接。由于PHPUnit运行一个PHP进程,因此没有任何数据库连接被垃圾收集。 PHP进程只是保持打开的连接,直到超过数据库实例的值max_connections

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

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