【发布时间】:2014-09-04 17:41:54
【问题描述】:
如下面的 Webgrind 输出所示,我的应用程序的大部分处理时间都花在了 YAML 解析上。
注意:Webgrind 输出以“百分比”为单位。因此,将“总自身成本”加起来显示总时间的 83.63% 用于处理 YAML。
我看过这个相关的帖子:
Symfony2 Application Parses YML On Every Request
但是,我的实现使用的是 ApcClassLoader 类,如下所示:
$loader = new ApcClassLoader('odr_dev', $loader);
$loader->register(true);
此外,我已经使用 apc.php 检查了 APC 系统,我的类和页面在 APC 缓存中找到并且正在被命中。即使在填充缓存之后,这也会在任何请求的 PROD 或 DEV 上发生。
我的理论是我们有一个循环实体引用,系统无法成功解析 YAML 以缓存它。因此,它最终会尝试在每个请求上解析 YAML。
但是,我在日志中没有看到任何关于无法解析 YAML 或任何内容的错误,并且不确定如何确定是否会出现这种情况或下一步该去哪里查看。
【问题讨论】:
-
你追溯Parser->parse()函数的具体调用者了吗?
-
我一直在努力,希望能找到今晚调用它们的原因。当我发现发生了什么时,我会发布更新。
-
注意 - 我正在运行 2.3.18 - 最新的长期支持版本。也许这在不同的版本上表现不同。我在下面发布了我的解决方案(接受的答案),它非常明确地适用于这个版本的代码。
标签: php symfony doctrine-orm yaml