Задать вопрос

Как исправит ошибку out of memory allocated 1404829696?

при записи данных в ехсел с помошю php выдает ошибку out of memory (allocated 1404829696). Пробовал добавит ini_set(), изменил php.ини но все ровно выдает такую ошибку
  • Вопрос задан
  • 781 просмотр
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
shaks
@shaks
забивается память, нужно подчищать значение переменных. но т.к. засрать столько памяти надо еще умудрится значит скорей всего у вас там вечный цикл гдето или какойто массив растет в геометрической прогрессии.
Ответ написан
Комментировать
Pjeroo
@Pjeroo
Веб-разработчик
Насколько много данных пытаетесь записать? PhpExcel ну очень прожорливая штука, возможно стоит писать по частям, так же нужно проверить код на предмет того, что сказал shaks
Ответ написан
des1roer
@des1roer
ученье - свет, а неученье - приятный полумрак
обычная тема. только у меня с ms sql такой прикол был. помню явно указывал типы столбцов. а вы не стесняйтесь напишите как побороли проблему
Ответ написан
Комментировать
@Sarvar4ik Автор вопроса
$i = 0;
  $file_name = 'xls/Spisok.xls';
  $file_name1 = 'xls/Spisok1.xls';
  require_once 'classes/PHPExcel.php'; 
  $phpexcel = PHPExcel_IOFactory::load($file_name);
  $page = $phpexcel->setActiveSheetIndex(0); 
$query = 'SELECT * FROM list';	
$result = pg_query($query) or die('Zaprosda muammo: ' . pg_last_error());	
while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {	
  $j = $i+2;

	$page->setCellValueByColumnAndRow(0,$j,$line4["p_id"]);
  
	$page->setCellValueByColumnAndRow(1,$j,$line4["surname"]);
	
	$page->setCellValueByColumnAndRow(2,$j,$line4["name"]);
	
	$page->setCellValueByColumnAndRow(3,$j,$line4["middlename"]);
	
	$page->setCellValueByColumnAndRow(4,$j,$line4["adress"]);

	if (isset($_POST["c5"]) && (!empty($_POST["c5"]))){
	$page->setCellValueByColumnAndRow(5,$j,$line4["birth"]);
	}
	if (isset($_POST["c6"]) && (!empty($_POST["c6"]))){	
	$page->setCellValueByColumnAndRow(6,$j,$line4["sex"]);
	}
	if (isset($_POST["c7"]) && (!empty($_POST["c7"]))){
	$page->setCellValueByColumnAndRow(7,$j,$line4["nationality"]);
	}
	if (isset($_POST["c8"]) && (!empty($_POST["c8"]))){	
	$page->setCellValueByColumnAndRow(8,$j,$line4["marital"]);
	}
	$i=$i+1;
}
    $objWriter = PHPExcel_IOFactory::createWriter($phpexcel, 'Excel2007');
    $objWriter->save($file_name1);

	pg_free_result($result);

	pg_close($conn);
Ответ написан
@liff
PHP >= 5.4, 7 + PostgreSQL + JS + EmberJs +++
Проверьте сделующее:

1) Бесконечный цикл в PHP
2) Проверить из консоли (cli) тоже
3) Увеличить для консоли (cli) памяти php -D memory-limit=1G
4) Использовать lazy load данных для записи/чтения
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы