经过几个小时的尝试和搜索,我希望有人可以帮助解决我的问题。
我创建了一个CSV上传,可以很好地处理小数字(至少100个工作正常)。当测试具有2,000条左右记录的文件时,我收到错误"连接错误:SQLSTATE [08004] [1040]连接太多"。
据我所知,这个错误可以通过在插入后关闭我的数据库连接来解决,我无法弄清楚如何在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()或其他东西可以解决我的问题。
答案 0 :(得分:0)
在每次迭代中,您都会调用saveEmployee
方法,以便在每次迭代时创建Adapter
的新实例。
将Adapter
初始化移出while循环(循环之前),你应该没问题。