Php 关闭Zend Framework中的MySQL连接(或“连接太多”解决方案)

Php 关闭Zend Framework中的MySQL连接(或“连接太多”解决方案),php,mysql,zend-framework2,fgetcsv,Php,Mysql,Zend Framework2,Fgetcsv,经过数小时的尝试和搜索,我希望有人能帮助解决我的问题 我创建了一个CSV上传,在小数字上效果很好(至少100个可以)。当测试一个有2000条记录的文件时,我得到一个错误“connecterror:SQLSTATE[08004][1040]over many connections” 据我所知,这个错误可以通过在插入后关闭我的DB连接来解决,我不知道在Zend 2中如何做,所有结果都是针对Zend 1的 如果有更好的方法将大型记录从CSV插入MySQL,那么我也愿意接受这些建议 我的控制器代码:

经过数小时的尝试和搜索,我希望有人能帮助解决我的问题

我创建了一个CSV上传,在小数字上效果很好(至少100个可以)。当测试一个有2000条记录的文件时,我得到一个错误“connecterror:SQLSTATE[08004][1040]over many connections”

据我所知,这个错误可以通过在插入后关闭我的DB连接来解决,我不知道在Zend 2中如何做,所有结果都是针对Zend 1的

如果有更好的方法将大型记录从CSV插入MySQL,那么我也愿意接受这些建议

我的控制器代码:

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);

我相信在$resultSet之后添加closeconnection()或其他东西可以解决我的问题。

在每次迭代中调用
saveEmployee
方法,因此在每次迭代中都会创建一个
适配器的新实例


将您的
适配器
初始化移出while循环(在循环之前),您应该会没事。

您可能正在为循环的每次迭代创建一个新连接,最终您会超过mysql的连接限制。正确的解决方法是删除重复的连接调用。很少有使用案例需要新的/独立的数据库连接,这不是其中之一。为什么要在整个csv导入中使用多个连接?