2014-10-06 90 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()方法中的數據庫斷開連接。