API 有数百个表格 - 内存不足

API with hundrets of forms - out of memory

在我的 Symfony 2.6 项目中,我有 API 移动应用程序,可以添加和反对大量数据。

主窗体由其他窗体的集合组成。每个子窗体都有相同的东西,总共有 4 个。所以结构看起来像这样:

主表格有 Child1 forsm 有 Child2 表格有 Child3 表格。

该对象有例如 Child3 的 2000 个实体,8 个 Child2 个实体,3 个 Child1 个实体和一个主实体。

保存数据时多次出现此错误:

AH01071: Got error 'PHP message: PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 88 bytes) in /vendor/symfony/symfony/src/Symfony/Component/OptionsResolver/OptionsResolver.php on line 755\n'

我刚刚为所有表单元素添加了类型,例如:

$buider->add('startLangutude', 'text')

我还关闭了 SQLLogger。有没有其他巧妙的解决方案可以帮助这里?您有这方面的经验可以分享吗?

我建议您放弃 Form 方法并使用简单的 json_decode 来获取数组(与对象相比,它在资源方面更便宜),然后使用 StrategyPattern。在每个策略中,您可以在对象创建过程之前验证给定的数组。如果对象有效,使用 doctrine batch processing 建议通过在每批后清除 EntityManager 来节省内存。

祝你好运。