0

昨晚,我的网络应用程序因白屏返回给用户而死机。很快就找到了根本情况:PHP内存不足。

跟踪问题后,我得出的结论是JMS Serializer无法处理序列化循环。

我有ProductGroup一个有多个Product对象(列表)的类。现在,每个都Product指代它所属的一个组。因此,当用户尝试序列化时,它会这样做,然后在它跳回(刚刚被序列化)时ProductGroup继续序列化每个,从而有效地创建序列化循环。ProductProductGroup

我设法解决了这个问题,但增加@ExcludeProduct::group财产。

所以,问题是:在序列化方面我还有其他选择吗?是否有可能JMS Serializer无法弄清楚循环?

4

1 回答 1

1

您可以尝试设置MaxDepthProductGroup->products 和 Product->group 以确保它不会进入循环。此外,对组 + 产品和产品 + 组使用不同序列化组的方法可以缓解这种情况,并确保在获取单个产品时仍然可以拥有关联的组。

关于您的第二个问题,在 Doctrine 中甚至不鼓励双向引用,因此 JMS\Serializer 抛出某种异常而不是尝试“修复”它似乎是预期的行为。

于 2015-08-24T20:22:11.073 回答