Нужно записать хотя бы +150к записей в PHPexcel, то есть в одной строчке должно быть заполнено 8-9 колонок.
Постоянно отдается ошибка спустя 5-10 минут после начала записи:
PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 85 bytes)
Как видно ниже, я выбираю по 1000 записей, и через LIMIT OFFSET записываю типо так: "LIMIT $i, 1000". То есть отработала 1000 - идет следующая 1000.
do {
$i += 1000;
$sql = "SQL запрос........ LIMIT $i, 1000";
$stmt = $this->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(\PDO::FETCH_ASSOC);
foreach($result as $url) {
$sheet->setCellValue("колонка", "значение"); // и так в 8 колонок
$row++;
}
} while ($result);
В cacheSettings ставил разные значения memoryCacheSize, всё равно беда.
$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;
$cacheSettings = array( 'memoryCacheSize ' => '512MB');
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel2007");
И да, в php_ini увеличивать память не вариант. Кто то подскажет, что я не так делаю? И как правильно будет