@Octoberfest

Как разбить большой процесс php на несколько последовательных, избежав Fatal error: Allowed memory size?

Здравствуйте. Есть скрипт который генерирует большой Excel файл (порядка 100000 строк). Для его заполнения на сервере недостаточно памяти. Поменять сервер нет возможности в данный момент.

Скажите, возможно ли как-то разбить процесс создания такого файла на "подпроцессы", например, всего 100к записей, я заношу 10к, сохраняю в файл и затем (как это сделать? м.б. cURL?) вызываю другой процесс, который добавляет ещё 10к записей в файл. Или данный выход - полный бред? Как ещё можно сделать?
  • Вопрос задан
  • 336 просмотров
Решения вопроса 1
@Arekusei
А чем вы генерируете excel файл? И падает всё когда уже начало писать файл или на момент подготовки данных? Вообще тут и несколько процессов может не понадобится если к памяти относиться бережно при генерации файла.
Основные советы обычно таковы:
1. Данные подготавливать постепенно пачками
2. Данные сбрасывать на диск так же пачками
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега PHP
Web developer
Excel-файл нельзя записать частично, он будет невалидным.
А вот CSV-файл можно. А если правильно написать код и избежать утечек памяти, то записывать CSV-файл можно почти неограниченного размера даже при небольшой оперативной памяти.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы