缓存Magento数据库IP

Jak*_*ith 5 xml caching magento

我们的开发和生产环境具有不同的数据库IP地址.我们的开发环境在我们的开发人员计算机上本地运行,并指向我们本地网络上的单个开发数据库服务器.我们的生产环境使用RackSpace托管的数据库,并托管在其本地网络上.不知何故,似乎我们的开发IP地址已经缓存在生产中.这是我到目前为止所做的:

  • 验证了生产中app/etc/local.xml中的IP地址是否正确.
  • 删除了var/cache/*和var/full_page_cache/*的内容
  • 重新启动我们的memcached服务器以清除那里的任何奇怪的缓存
  • 为开发IP地址设置了整个代码库
  • 转储mysql数据库并为dev IP转储(我们绝望)
  • 删除了/ tmp的内容
  • 禁用自定义模块

这已经工作了几个星期没有问题.当我禁用配置缓存时,问题就开始了.我知道你在想什么,它现在终于找到了自上次清除缓存以来有人做出的配置更改.那讲得通.没有意义的是我已经清除了上面提到的每个缓存,使用MageTool启用了配置缓存,一切都像魅力一样.

Jak*_*ith 9

事实证明,解决整个过程是一个两步的过程.

因为我们的生产和开发环境要求不同的IP app/etc/local.xml是未跟踪的,而是我们跟踪,app/etc/local-example.xml以便我们所有的开发人员可以快速轻松地将其复制到app/etc/local.xml并启动并运行.这已经成为公司的标准,我们在所有其他项目中使用它.值得庆幸的是,我的一位同事发现Magento加载了所有的xml文件app/etc/.

所以,不,我们的开发IP并没有神奇地缓存在一个疯狂的模糊位置,我们只是无意中加载它.将该文件重命名为app/etc/local.xml.example它后,停止引用我们的开发IP.好极了!

现在,这与问题没有直接关系,但是因为解决方案引入了一个我想提及的新bug.一旦我们重命名了xml文件并清除了所有缓存,我们就开始看到一个新的错误.

PHP Fatal error: Call to a member function setQueryHook() on a non-object in app/code/core/Mage/Core/Model/Resource/Setup.php on line 347

在我们的示例文件中,我们在单个<default_setup />节点内定义了数据库资源.对于我们的生产环境,我们实际上有一个三m设置,具有用于读写查询的单独IP,因此用于生产而不是<default_setup />我们拥有的单个节点<default_read /><default_write />节点.我从来没有找到关于资源中允许和需要的文档的文档,但读/写拆分是根据主题上另一个StackOverflow帖子中的说明设置,直到今天,工作得很好.

在预感中,我将<default_write />节点重命名为,<default_setup />并且一切都神奇地开始了.我还不确定读写是否正确分裂,但是一旦确认一切正常,我就会更新这个答案.