我们在使用Symfony2和Doctrine创建一个小实体方面遇到了问题,它可以正常工作,但速度非常慢且内存耗尽。
我们认为问题出在Symfony的$form->submit()
内。
这需要约0.1秒:
die('x');
$form->submit($request);
这需要约60秒:
$form->submit($request);
die('x');
我们尝试在此提交方法中“die()”,一直到return $this;
,运行时间大约为0.1秒。似乎在幕后发生了其他事情,我们找不到问题。
运行XDebug告诉我们以下内容: Symfony \ Component \ Form \ Form-> submit具有最高的包含成本,主要是此调用:Symfony \ Component \ Form \ Form-> viewToNorm。
我们尝试过以下方法:
开发或生产环境没有区别。
答案 0 :(得分:1)
我们通过将query_builder添加到表单构建器来解决它,现在一切正常。
自:
->add('authentication', 'entity', array(
'class' => 'Model\Authentication',
'required' => false,
'multiple' => false,
'property' => 'id',
'invalid_message' => _('No authentication entity found')
))
为:
->add('authentication', 'entity', array(
'class' => 'Model\Authentication',
'required' => false,
'multiple' => false,
'property' => 'id',
'invalid_message' => _('No authentication entity found'),
'query_builder' => function (EntityRepository $er) {
return $er
->createQueryBuilder('au')
->select('au')
;
}
))