PHPExcel throws Fatal error: разрешенный размер памяти 134217728 байт исчерпан (пытался выделить 71 байт)

Я использую PHPExcel (находится здесь: https://github.com/PHPOffice/PHPExcel ). Если я пытаюсь прочитать более чем 2000 строк, тогда он показывает ошибку памяти следующим образом.

Неустранимая ошибка: допустимый размер памяти 134217728 байт исчерпан (пытался выделить 71 байт) в /home/sample/PHPExcelReader/Classes/PHPExcel/worksheet.php в строке 89

Мой диапазон данных Excel: A1: X2000

Ниже мой код используется для чтения Excel.

ini_set('memory_limit', '-1'); /** Include path **/ set_include_path(get_include_path() . PATH_SEPARATOR . 'Classes/'); /** PHPExcel_IOFactory */ include $unsecured_param['home_dir'].'APIs/PHPExcelReader/Classes/PHPExcel/IOFactory.php'; $inputFileName = $target; // File to read //echo 'Loading file ',pathinfo($inputFileName,PATHINFO_BASENAME),' using IOFactory to identify the format<br />'; try { $objPHPExcel = PHPExcel_IOFactory::load($inputFileName); } catch(Exception $e) { die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage()); } $sheetData = $objPHPExcel->getActiveSheet()->rangeToArray('A1:X2000', null, true, true, true) //store data into array.. $i=0;$j=0;$max_rows=0;$max_columns=0; foreach($sheetData as $rec) { foreach($rec as $part) {//echo "items[$j][$i]=" ; echo $part;echo "<br>"; $items[$j][$i]=$part; $i=$i+1; if($j==0) {$max_columns=$i;} } $j=$j+1;$i=0; } $max_rows=$j; 

Может кто-нибудь, пожалуйста, дайте мне знать, как преодолеть эту проблему?

Solutions Collecting From Web of "PHPExcel throws Fatal error: разрешенный размер памяти 134217728 байт исчерпан (пытался выделить 71 байт)"

Рассмотрите возможность использования кэширования ячеек, чтобы уменьшить объем памяти, необходимый для хранения книги в памяти, как описано в разделе 4.2.1 документации разработчика

И подумайте, не использовать toArray (), а затем использовать это для создания другого массива в памяти …. это действительно использует много памяти для хранения дублированных данных, когда вы можете просто прокручивать строки и столбцы рабочего листа, чтобы сделать что вам нужно

Эта ошибка означает, что файл PHP, который вы используете, превысил допустимый размер в памяти для PHP на вашем сервере. Вы можете редактировать свой файл PHP.ini, чтобы ваши файлы PHP могли выделять больше места в памяти при их запуске, что может помочь в этом, но в то же время, если вы используете 32-разрядную ОС Linux на своем сервере для чего-либо разум, есть жесткий платок 3,5 ГБ, который может занять процесс, поэтому даже выделяя больше, он все равно будет терпеть неудачу и, следовательно, вызовет аналогичную проблему.

В таких случаях это действительно сводится к тому, что объем данных, которые вы пытаетесь вытащить, слишком велик, и вам нужно как-то масштабировать его. Это не обязательно проблема с кодом, а скорее то, сколько данных вы фактически пытаетесь показать / обработать.

Используя google, мне удалось обнаружить, что объем памяти, который вы отмечаете (134217728 байт), соответствует 128 Мбайт по умолчанию, который PHP.ini использует для memory_limit. Изменение значения в исходном состоянии решит эту проблему. Если вы не можете этого сделать, вам нужно как-то ограничить объем данных, которые вы вытаскиваете за один раз.

Информация: http://ca1.php.net/manual/en/ini.core.php#ini.memory-limit