我已经创建了一个脚本,并且出现以下错误。如果将内存大小升级到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');
我得到相同的错误,试图输出一个4k行的Excel,我认为PHPExcel有超过2个3k记录的东西泄漏内存 –
http://stackoverflow.com/questions/4817651/phpexcel-runs- 256-512-也-124mb-ram –
谢谢,我试过了($ objReader-> setReadDataOnly(true);)但这不起作用... – Bas