2014-10-06 3 views
0

Phalcon에서 PHPUnit을 사용하고 있습니다.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; 
} 

내가 스위트 룸의 수를 실행 한 후, 나는를 얻기 위해 시작 했어 문제로 실행 해요 : 내 UnitTestCase (기본 테스트 클래스), 난 이렇게 연결을 설정 한 다음 오류 (특정 시점 이후의 모든 테스트 사례에서) :

PDOException: SQLSTATE[HY000] [1040] Too many connections 

내가 잘못하고 있나?

답변

2

각 테스트 케이스에 새 연결을 계속 추가하기 만하면됩니다. PHPUnit은 하나의 PHP 프로세스를 실행하기 때문에 아무런 데이터베이스 연결도 가비지 수집되지 않습니다. PHP 프로세스는 데이터베이스 인스턴스의 max_connections 값을 초과 할 때까지 열려있는 연결을 계속 누적합니다.

MySQL 세션을 열어 수시로 SHOW PROCESSLIST을 실행하면 연결 수가 증가하는 것을 관찰 할 수 있습니다.

PHPUnit tearDown() 방법으로 데이터베이스와의 연결을 끊어야합니다.

관련 문제