我的Symfony2应用程序有一些性能问题,所以我在它上面运行了一个webgrind,以便查看发生了什么。事实证明,它在每次请求时都要解析大量的YML文件,我不知道为什么。我已经启用了APC缓存,所以我不知道它会是什么。在这个问题上的任何帮助都将不胜感激。
编辑:这是我运行的webgrind的截图。

发布于 2014-08-02 01:25:13
根据我的研究,APCClassLoader似乎不会导致Symfony2缓存Doctrine中使用的YAML文件。默认情况下,它似乎会缓存配置文件(config.yml、parameters.yml),但Doctrine使用的实际ORM YAML文件不会缓存,除非您指定缓存驱动程序,如下面链接的文档中所示:
http://symfony.com/doc/2.3/reference/configuration/doctrine.html#caching-drivers
所以,如果海报只有配置YAML而没有原理YAML,上面的解决方案可能解决了这个问题。但是,如果涉及Doctrine YAML,则必须指定Doctrine缓存驱动程序。
这也会影响使用注释的人,因为除非指定了缓存驱动程序( Doctrine默认数组缓存除外),否则每次加载页面时都会解析注释。
我认为我应该发布,因为这是一个复杂的问题,上面的答案在我的案例中具有误导性,Doctrine ORM YAML文件是缓存问题的来源。
这篇文章有关于我的具体问题和解决方案的更多细节:
Why is Symfony2 app spending 70-90% of its time parsing YAML?
发布于 2012-06-04 06:27:23
弄清楚是怎么回事了。我启用了APC并正常工作,但没有在我的autoload.php中使用ApcUniversalClassLoader。更多细节here。当他们在文档中说提高性能的“建议”时,他们真正的意思是“你必须这样做,否则你的表现会很糟糕。”
https://stackoverflow.com/questions/10871939
复制相似问题