【发布时间】:2014-08-25 07:35:05
【问题描述】:
我使用 Doctrine 2 开发了一个网站,现在可以上线了。当我在项目开始时设置 Doctrine 时,我主要担心让它工作,那时我并不太担心性能。尽管如此,我并不需要痴迷的表现,但我有一种感觉,如果没有正确设置,使用 Doctrine 的事情会变得非常糟糕。我正在考虑代理类,我担心它们是在每次调用时生成的,这不好。我的代码如下所示:
$config=Setup::createConfiguration(FALSE);
...
$config->setProxyDir(__DIR__."/proxies");
$config->setAutoGenerateProxyClasses(false);
...
$em=\Doctrine\ORM\EntityManager::create($conn,$config);
这很有效。通过作品,我的意思是它的行为正确。我不认为它是优化的。
从教义手册中,它说setAutoGenerateProxyClasses:
获取或设置代理类是否应该由 Doctrine 在运行时自动生成。如果设置为 FALSE,代理类必须通过教义命令行任务 generate-proxies 手动生成。生产环境的强烈推荐值为 FALSE。
因此,在我的设置下,预期的行为是,Doctrine 应该尝试从代理目录加载代理。我必须运行generate-proxies 命令才能将它们放在那里。
奇怪的是,即使我没有代理目录,它也能正常工作!因此,Doctrine 似乎仍然以某种方式即时生成代理。当然,我可以运行generate-proxies 并希望获得最好的结果,但我更愿意系统化一点。有没有办法确保 Doctrine 正在加载代理而不是生成它们?
【问题讨论】:
标签: php doctrine-orm