에 fgetcsv와 메모리 부족 : Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 36 bytes)
큰 파일
가에 실패 라인은 코드 블록에서 while (($dataInputRecord = fgetcsv($inputFile, $maxRowLength, ",")) !== FALSE)
입니다 :
if (($inputFile = fopen($fileName, "r")) !== FALSE) {
while (($dataInputRecord = fgetcsv($inputFile, $maxRowLength, ",")) !== FALSE) {
// do stuff
}
fclose($inputFile);
}
전체 파일은 32MB입니다. $maxRowLength
크기로 놀아도 도움이되지 않았습니다. 8KB로 자르면 문제가 해결되므로 문제는 파일 크기라고 확신합니다. 파일 크기에 상관없이 어떻게 만들 수 있습니까?
편집 : 내 상사는 루프 내에서 코드가
메모리는 결코 무한하지 않으므로 모든 CSV 파일 크기에서 작동하는 보편적 인 솔루션이 없습니다. 두 가지 해결 방법이 있습니다. http://stackoverflow.com/questions/17520093/read-large-data-from-csv-file-in-php – fvu
전체 파일을 메모리로로드하고 싶지 않습니다. . 루프의 반복을 두 번 이상 지속해야하는 유일한 변수는 특정 조건을 충족시키는 상대적으로 작은 행의 배열과 입력 파일의 핸들이어야합니다. – ccs
글쎄, 나는 실제 문제가 * 당신이'// 물건을 만들 때'무엇을 생략했는지 (매우 높은 스테이크로) 내기 할 것입니다. –