Ste*_*ant 5 php performance profiling symfony doctrine-orm
我正在使用Symfony2表单生成器来制作表单.一切都运作良好,但表现很糟糕.一个简单的表单(只是几个文本字段)在大约1000毫秒内呈现,但是对于实体或集合字段,它会减慢到大约7500-10000毫秒.
我正在使用query_builder
(with createQueryBuilder()
)选项,就像文档中的这个例子一样.添加集合或实体字段会使应用程序变得非常缓慢,但我不知道为什么.
Controller占用大部分时间,因此Doctrine部分(192个查询)或Twig部分似乎不是问题.剥离树枝模板没有帮助.我已经尝试了一些改进(缓存),但这也没有帮助.
如何改进(或者:确切地说明问题的确切位置)这段代码的性能?
您执行表单实体字段和集合的方式很糟糕,您的性能问题可能来自此。
首先尝试删除您在表单中编写的查询,这不是正确的位置,尤其是您的查询是默认查询,因此无需覆盖它们。
所以你可以非常简单地这样做:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('ref', 'text')
->add('title', 'text')
->add('lessor', 'entity', array(
'class' => 'MyCompany\AppBundle\Entity\Lessor',
'property' => 'title')
)
->add('type', 'entity', array(
'class' => 'MyCompany\AppBundle\Entity\ObjectType',
'property' => 'title')
)
->add('prices', 'collection', array(
'type' => new ObjectItemPriceType()
))
->add('values', 'collection', array(
'type' => new ObjectValueTextType()
'allow_add' => true,
'prototype' => true
))
->add('save', 'submit');
}
Run Code Online (Sandbox Code Playgroud)
在此处了解有关实体表单类型的更多信息
如果您需要传递一些您想要做的选择,则必须设置 query_builder 选项并为其提供存储库方法(此处为示例),这是正确的方法。
对于收藏,您在食谱中有完整的示例,希望对您有所帮助。
如果它不能解决您的问题,请尝试设置 xhprof,它会给您一个更详细的请求图表以及为什么需要这么多时间:Xhprof bundle
归档时间: |
|
查看次数: |
1940 次 |
最近记录: |