Сериализатор JMS не может обработать цикл сериализации

Прошлой ночью мое веб-приложение умерло с белым экраном, возвращаемым пользователю. Это не займет много времени, чтобы выяснить основной случай: PHP не хватало памяти.

Проследив проблему, я пришел к выводу, что JMS Serializer не удалось обработать цикл сериализации.

у меня урок ProductGroup который имеет номер Product объекты (список). Теперь каждый Product относится к группе, к которой он принадлежит. Итак, когда пользователь пытается сериализовать ProductGroup, он делает это, а затем приступает к сериализации каждого Product когда он возвращается к ProductGroup (который был только что сериализован) эффективно создает цикл сериализации.

Мне удалось это исправить, но положить @Exclude на Product::group имущество.

Итак, вопрос: У меня есть другой вариант, когда дело доходит до сериализации? Возможно ли, что JMS Serializer не в состоянии выяснить цикл?

0

Решение

Вы можете попробовать установить MaxDepth в ProductGroup-> products и Product-> group, чтобы убедиться, что он не зацикливается. Кроме того, использование вашего подхода с различными группами сериализации для групп + продукт и продукт + группа может смягчить это и гарантировать, что у вас все еще может быть связанная группа при получении одного продукта.

Что касается вашего второго вопроса, наличие ссылок в обоих направлениях даже не рекомендуется в Doctrine, поэтому JMS \ Serializer выдает какое-то исключение вместо того, чтобы пытаться «исправить», это похоже на ожидаемое поведение.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]