关闭Zend Framework中的MySQL连接(或“Too many connections”解决方案)

时间:2015-01-15 21:48:53

标签: php mysql zend-framework2 fgetcsv

经过几个小时的尝试和搜索,我希望有人可以帮助解决我的问题。

我创建了一个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()或其他东西可以解决我的问题。

1 个答案:

答案 0 :(得分:0)

在每次迭代中,您都会调用saveEmployee方法,以便在每次迭代时创建Adapter的新实例。

Adapter初始化移出while循环(循环之前),你应该没问题。