2013-04-14 6 views
0

При загрузке файла с размером файла 38 МБ с использованием PHPExcel я получаю ошибку huge text node: out of memory, хотя я установил php memory_limit в 1024M.Ошибка загрузки файла csv: Огромный текстовый узел с памятью

Любая идея, как можно загрузить большой .csv-файл?

Ошибка

Error loading file "data.csv": Warning: DOMDocument::loadHTMLFile(): xmlSAX2Characters: huge text node: out of memory in /var/www/site/data.csv, line: 264094 in /var/www/site/vendor/CodePlex/PHPExcel/PHPExcel/Reader/HTML.php line 458

PHP код

ini_set('memory_limit', '1024M'); 

$inputFileName = '/var/www/site/data.csv'; 
$phpExcel = new PHPExcel; 

// Read your Excel workbook 
try 
{ 
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName); 
    $objReader = PHPExcel_IOFactory::createReader($inputFileType); 
    $objPHPExcel = $objReader->load($inputFileName); 
} 
catch(Exception $e) 
{ 
    die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage()); 
} 

php.ini

; Maximum amount of memory a script may consume (128MB) 
; http://php.net/memory-limit 
memory_limit = 128M 
+0

Похоже на проблему с памятью, что такое max, разрешенное в php.ini? – Fabio

+0

php.ini говорит 128M – Nyxynyx

+0

Он уже высок, вы все равно можете получить его выше и посмотреть, работает ли он, но он будет потреблять много памяти, хотя – Fabio

ответ

1

Вы можете использовать fgetcsv и загружать csv по строкам.

$file = '/path/filename.csv'; 

$f = fopen($file, 'rb'); 

while($cols = fgetcsv($f)) 
{ 
    // $cols[0]; // first column of the current row 
} 

fclose($f); 
Смежные вопросы