Мой VPS имеет 8 ГБ памяти
Когда я пытаюсь написать 4000 строк и 62 столбца.1 столбец содержит изображение (PHPExcel_Worksheet_MemoryDrawing)
После записи некоторых данных ОС имеет фоновый скрипт уничтожения, потому что VPS не имеет больше памяти.
Я использую PHPExcel версии 1.7.8
Я записываю файл Excel в каждом цикле.
Образец кода для записи изображения
$gdImage = imagecreatefromstring(file_get_contents($proof_photo_1));
if ($gdImage) {
$objDrawing = new PHPExcel_Worksheet_MemoryDrawing();
$objDrawing->setImageResource($gdImage);
$objDrawing->setCoordinates("BA" . $i);
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
$objDrawing->setHeight(150);
$width = $objDrawing->getWidth() * 0.143;
$height = $objDrawing->getHeight() * 0.75;
if ($rowDim->getRowHeight() < $height) {
$rowDim->setRowHeight($height);
}
$colDimSh = $objPHPExcel->getActiveSheet()->getColumnDimension("BA");
$colDimSh->setAutoSize(false);
$colDim = $objPHPExcel->getActiveSheet()->getColumnDimension("BA");
if ($colDim->getWidth() < $width) {
$colDim->setWidth($width);
}
unset($objDrawing);
} else {
$objPHPExcel->getActiveSheet()->SetCellValue("BA" . $i, "-");
}
Я пробовал много вещей для экономии памяти
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
$cacheSettings = array('memoryCacheSize' => '100MB');
PHPExcel_Settings::setCacheStorageMethod($cacheMethod,$cacheSettings);
В каждой сторонеloop
if($i % 100 == 0){
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save($csvPath);
$objPHPExcel->disconnectWorksheets();
unset($objWriter);
unset($objPHPExcel);
chmod($csvPath, 0777);
$objPHPExcel = PHPExcel_IOFactory::load($csvPath);
$objPHPExcel->setActiveSheetIndex(0);
}
Выше приведено много времени для записи файла Excel и иногда сброса файла с начального уровня.