После долгих попыток поиска и поиска я надеюсь, что кто-то сможет помочь с моей проблемой.Закройте соединение MySQL в Zend Framework (или решение «Слишком много соединений»)
Я создал CSV-загрузку, которая отлично работает на небольших количествах (минимум 100 работает отлично). При тестировании файла с 2000 учетными записями я получаю сообщение об ошибке «Connect Error: SQLSTATE [08004] [1040] Слишком много соединений».
Из того, что я могу сказать, эта ошибка может быть решена путем закрытия моего подключения к БД после вставки, которую я не могу понять, как это сделать в Zend 2, все результаты для Зенда 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 бы решить мою проблему.
Вы, вероятно, создаете новое соединение навсегда итерации своего цикла, и в конечном итоге вы превысите ограничение на соединение с mysql. Правильным решением будет удаление повторяющихся вызовов соединения. существует очень мало случаев использования, которые когда-либо потребуют новых/независимых подключений к БД, и это не один из них. –
Почему вы используете более одного соединения для всего импорта csv? –