시도하고 검색 한 후 다른 사람이 내 문제를 해결할 수 있기를 바랍니다.젠드 프레임 워크에서 MySQL 연결 닫기 (또는 "연결이 너무 많음")
작은 숫자 (100 개 이상 유효)에서 훌륭하게 작동하는 CSV 업로드를 만들었습니다. 2,000 개의 레코드가있는 파일을 테스트 할 때 "연결 오류 : SQLSTATE [08004] [1040] 연결이 너무 많습니다"라는 오류가 발생합니다.
나는,이 오류가 나는 젠드 2에서 수행하는 방법을 알아낼 수 없습니다 삽입 후 내 DB 연결을 종료하여 해결할 수 있습니다 무엇을 말할 수에서, 모든 결과가 젠드 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);
내 문제를 해결할 것입니다 $으로 결과 집합 후 closeconnection() 또는 뭔가를 추가 생각합니다.
루프를 반복적으로 반복하기 때문에 새로운 연결을 만들고 결국 mysql의 연결 제한을 초과하게됩니다. 적절한 수정은 반복적 인 연결 호출을 제거하는 것입니다. DB에 대한 새롭고 독립적 인 연결을 필요로하는 사용 사례가 거의 없으며, 이것도 그 중 하나가 아닙니다. –
왜 전체 CSV 가져 오기에 둘 이상의 연결을 사용하고 있습니까? –