【问题标题】:Magento database IP is cachedMagento 数据库 IP 被缓存
【发布时间】:2013-01-24 17:59:58
【问题描述】:

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

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

这已经运行了数周没有问题。当我禁用配置缓存时,问题就开始了。我知道你在想什么,它刚刚终于获得了自上次清除缓存以来某人所做的配置更改。那讲得通。没有意义的是,我已经清除了上面提到的所有缓存,enabled the config cache using MageTool,一切都像一个魅力。

【问题讨论】:

    标签: xml magento caching


    【解决方案1】:

    事实证明,修复这整个事情是一个两步过程。

    因为我们的生产和开发环境需要不同的 IP,app/etc/local.xml 未被跟踪,而是我们跟踪 app/etc/local-example.xml,以便我们所有的开发人员可以快速轻松地将其复制到 app/etc/local.xml 并启动并运行。这已成为一种公司标准,我们在所有其他项目中都使用它。谢天谢地,我的一位同事发现 Magento loads all the xml files in app/etc/.

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

    现在,这与问题没有直接关系,但因为解决方案引入了一个新错误,我想提一下。一旦我们重命名了 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 /> 节点中定义了我们的数据库资源。对于我们的生产环境,我们实际上有 a triple-m setup 具有单独的 IP 用于读取和写入查询,因此对于生产而不是单个 <default_setup /> 节点,我们有 <default_read /><default_write /> 节点。我一直无法找到关于资源中允许和要求的确切内容的文档,但读取/写入拆分是根据 the instructions in another StackOverflow post on the topic 设置的,并且直到今天,效果都很好。

    凭直觉,我将 <default_write /> 节点重命名为 <default_setup />,然后一切都神奇地重新开始工作。我还不确定读写是否正确拆分,但一旦我确认一切正常,我会更新这个答案。

    【讨论】:

    • 嘿,你有没有弄清楚你的 <default_write> 节点出了什么问题?
    • 很遗憾,不,我再也没有机会回到那个项目了,我已经离开了那个项目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    相关资源
    最近更新 更多