我的Doctrine设置是否正确设置用于生产?

时间:2014-08-25 07:35:05

标签: php doctrine-orm

我开发了一个使用Doctrine 2的网站,现在可以上线了。当我在项目开始时设置Doctrine时,我主要担心它会起作用,我在这一点上并没有太担心性能。尽管如此,我仍然不需要表现到痴迷,但我有一种感觉,即如果设置不正确,Doctrine的表现会非常糟糕。我正在考虑代理类,我担心它们是在每次调用时生成的,这并不好。我的代码看起来像这样:

$config=Setup::createConfiguration(FALSE);
...
$config->setProxyDir(__DIR__."/proxies");
$config->setAutoGenerateProxyClasses(false);
...
$em=\Doctrine\ORM\EntityManager::create($conn,$config);

这很有效。通过工作,我的意思是它行为正确。我不认为它是优化的。

从Doctrine手册中,它说的是setAutoGenerateProxyClasses

  

获取或设置是否应该在运行时由Doctrine自动生成代理类。如果设置为FALSE,则必须通过doctrine命令行task generate-proxies手动生成代理类。强烈建议的生产环境值为FALSE。

因此,预期的行为将是我的设置,Doctrine应该尝试从代理目录加载代理。我必须运行generate-proxies命令将它们放在那里。

奇怪的是即使我没有代理目录也能正常工作!因此,似乎Doctrine 仍然在运行中生成代理如何。当然,我可以运行generate-proxies并希望获得最佳效果,但我更愿意更加系统化。有没有办法确保Doctrine正在加载代理而不是生成它们?

1 个答案:

答案 0 :(得分:0)

哎呀......我没有打电话给$config->setAutoGenerateProxyClasses(false); ...... false来自一个看起来并非false的变量......当它实际上是false时,Doctrine拒绝自动创建代理,正如预期的那样。此外,还有来自cli的orm:ensure-production-settings命令。

相关问题