【发布时间】:2014-01-09 19:08:14
【问题描述】:
好的,这是我的一个新的。
情况是这样...我有一个 Cake 应用程序在多个环境(开发、质量保证、分段、实时)下运行,使用 GIT 进行管理。
我正在开发我的开发分支,并从 dev.BLAH.com 访问该分支。 DEV 由 /var/www/dev.BLAH.com/app 提供服务
有时,在开发 DEV 时,我开始收到如下错误:
Warning (512): Model "Exercise" is not associated with model "ExerciseOutcome" [/var/www/QA.BLAH.com/lib/Cake/Model/Behavior/ContainableBehavior.php, line 344]
注意:该错误是因为它正在尝试查找关联而引起的 尚未在 QA 环境下构建,因此与缺少关联无关,而是与错误路径有关。
显然,出于某种未知原因,DEV 域正在尝试提供来自 QA 域的文件!现在,我不认为这与某种人类编码错误有关,因为它的简单修复是重新启动 Apache!
现在,我认为这可能是某种会话问题,因为我将会话存储在数据库中,但即使我清除了数据库中的所有会话(不重新启动 apache),它也无法修复它。
但是,如果我重新启动 Apache,保持会话表不变,它突然又开始工作了!
这一切对我来说似乎很奇怪,我只是不知道该去哪里找。 我尝试更改不同级别的缓存,但这并没有改变任何东西。
我不认为我是个白痴,但我希望有人能证明我错了! ;)
【问题讨论】:
-
您是否使用 APC 进行缓存?每个实例是否有不同的缓存前缀(即 dev、qa、staging 等不同的缓存前缀)?
-
@BenHitchcock 可能是对的。我在切换主机时遇到了同样的问题。如果服务器能够处理,Cake 默认设置为切换到 APC 进行缓存。这是来自book.cakephp.org/2.0/en/core-libraries/caching.html-ApcCache APC 缓存使用 PHP APC 扩展。此扩展使用网络服务器上的共享内存来存储对象。这使得它非常快,并且能够提供原子读/写功能。默认情况下,2.0-2.2 中的 CakePHP 将使用此缓存引擎(如果可用)。
-
哦,好问题!我没有想到。我会尝试将其关闭,看看是否有影响!
-
@BenHitchcock - 哇!好抓人!我相信那成功了!我不能总是重新制作它,但目前,它似乎已修复。
-
也感谢@JadedCore 提供的信息!
标签: php apache session cakephp cakephp-2.3