Я создал сценарий, и я получаю следующую ошибку. Если обновить размер памяти до 7g, все равно ошибка. Поэтому я попытался добавить 10000 записей и сохранить их и перейти на следующий 10000, чтобы решить проблему, работает, но все равно получаю ошибку.Неустранимая ошибка: допустимый размер памяти xxx байт исчерпан Php excel
Есть ли способ скрыть книгу или другие методы?
Thnx!
awnser:
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_discISAM;
$cacheSettings = array(
'dir' => '/home/domains/xxxx.nl/public_html/xxxxx'
);
require_once 'PHPExcel.php';
require_once 'PHPExcel/Writer/Excel2007.php';
require_once 'PHPExcel/IOFactory.php';
$counter = $result->num_rows;//159920
$spreadsheet = new PHPExcel();
$spreadsheet->setActiveSheetIndex(0);
$worksheet = $spreadsheet->getActiveSheet();
//header
$worksheet->setCellValueExplicit('A' . 1, 'Filename', PHPExcel_Cell_DataType::TYPE_STRING);
etc
etc
$rownr = 2;
$counterN = 0;
while ($row = mysqli_fetch_assoc($result)) {
$worksheet->setCellValueExplicit('A' . $rownr, utf8_encode($row['filename']), PHPExcel_Cell_DataType::TYPE_STRING);
etc
etc
if($counterN == 10000){
$objWriter = new PHPExcel_Writer_Excel2007($spreadsheet);
$objWriter->save('test.xlsx');
$objPHPExcel = PHPExcel_IOFactory::load("test.xlsx");
$objPHPExcel->setActiveSheetIndex(0);
$row = $objPHPExcel->getActiveSheet()->getHighestRow()+1;
$counterN = 0;
}
$counterN++;
}
$objWriter = new PHPExcel_Writer_Excel2007($spreadsheet);
$objWriter->save('test.xlsx');
Я получаю ту же ошибку, пытаясь вывести excel с 4k строк, я думаю, PHPExcel имеет утечку памяти с вещами с более чем 2 o 3k записей –
http://stackoverflow.com/questions/4817651/phpexcel-runs- out-of-256-512-and-also-1024mb-of-ram –
Спасибо, я попробовал ($ objReader-> setReadDataOnly (true);) но это не работает ... – Bas