В моем проекте Symfony 2.6 у меня есть API для мобильного приложения, которое дает возможность добавлять и обрабатывать большое количество данных.
Основная форма состоит из коллекции других форм. Каждая из дочерних форм имеет одинаковые вещи, всего 4. Итак, структура выглядит так:
Мастер форма имеет Child1 форма, которая имеет Child2 формы, которая имеет Child3 формы.
Объект имеет, например, 2 000 объектов для Child3, 8 Child2 сущностей, 3 Child1 сущности и одна главная сущность.
Много раз я получаю эту ошибку при сохранении данных:
AH01071: получено сообщение об ошибке ‘PHP: Неустранимая ошибка PHP: допустимый объем памяти 536870912 байт исчерпан (попытка выделить 88 байт) в /vendor/symfony/symfony/src/Symfony/Component/OptionsResolver/OptionsResolver.php в строке 755 \ n ‘
Я просто добавил типы для всех элементов формы, например:
$buider->add('startLangutude', 'text')
Также я выключил SQLLogger. Есть ли какое-нибудь другое решение, которое могло бы помочь здесь? Есть ли у вас какой-то опыт и можете поделиться?
Я бы предложил Вам отказаться Form
подход и использовать простой json_decode
чтобы получить массив (это дешевле ресурсов по сравнению с объектом), а затем создать кучу ArrayToEntityTransformer
с помощью StrategyPattern
, В каждой стратегии Вы можете проверить данный массив перед процессом создания объекта. Если объект действителен, используйте доктрина пакетной обработки рекомендации по экономии памяти путем очистки EntityManager
после каждой партии.
Удачи.
Других решений пока нет …