Закройте MySQL Connection в Zend Framework (или решение «Слишком много подключений»)

После нескольких часов попыток и поисков, я надеюсь, что кто-то может помочь с моей проблемой.

Я создал CSV-загрузку, которая отлично работает на небольших числах (по крайней мере, 100 отлично работает). При тестировании файла с 2000 записями или около того я получаю сообщение об ошибке «Ошибка подключения: SQLSTATE [08004] [1040] Слишком много подключений».

Из того, что я могу сказать, эту ошибку можно устранить, закрыв соединение с БД после вставки, что я не могу понять, как это сделать в Zend 2, все результаты для Zend 1.

Если есть лучший способ вставить большие записи в MySQL из CSV, то я также открыт для этих предложений.

Код моего контроллера:

while ($line = fgetcsv($fp, 0, ",")){
$record = array_combine($header, $line);
$record['group_id'] = $extra1;
$employee->exchangeArray($record);
$this->getEmployeeTable()->saveEmployee($employee);
}

А мой код saveEmployee — это просто базовая вставка:

$adapter = new Adapter($dbAdapterConfig);
$sql = "INSERT INTO......;
$resultSet = $adapter->query($sql, \Zend\Db\Adapter\Adapter::QUERY_MODE_EXECUTE);

Я полагаю, что добавление closeconnection () или что-то после $ resultSet решит мою проблему.

2

Решение

На каждой итерации вы называете saveEmployee Метод так на каждой итерации вы делаете новый экземпляр Adapter,

Переместить ваш Adapter инициализация из цикла while (перед циклом), и все должно быть в порядке.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]