继续在Amazon EC2上获取redis错误

时间:2014-07-16 22:11:23

标签: magento amazon-ec2 redis

我刚刚将我的Magento网站移动到了亚马逊EC2,但是继续获得"连接到Redis后失败了#2;错误。我试图从app / etc / local.xml中删除redis配置,但仍然会收到该错误。

我还尝试直接从core_cache_option表中禁用所有缓存选项。我不知道如何清理已经缓存的文件。 var / cache文件夹下没有预期的缓存文件,我已尝试从redis-cli命令提示符中刷新,但仍然会出现此错误。

知道我还应该尝试什么?

<cache>
  <backend_options>
    <server><![CDATA[/var/tmp/_cache.sock]]></server>
    <port><![CDATA[0]]></port>
    <persistent><![CDATA[]]></persistent>
    <database><![CDATA[0]]></database>
    <password><![CDATA[]]></password>
    <connect_retries><![CDATA[1]]></connect_retries>
    <read_timeout><![CDATA[10]]></read_timeout>
    <automatic_cleaning_factor><![CDATA[0]]></automatic_cleaning_factor>
    <compress_data><![CDATA[1]]></compress_data>
    <compress_tags><![CDATA[1]]></compress_tags>
    <compress_threshold><![CDATA[20480]]></compress_threshold>
    <compression_lib><![CDATA[gzip]]></compression_lib>
    <use_lua><![CDATA[0]]></use_lua>
  </backend_options>
  <backend><![CDATA[Cm_Cache_Backend_Redis]]></backend>
</cache>

1 个答案:

答案 0 :(得分:11)

鉴于EC2实例是短暂的,你应该能够重新生成实例,对吧?如果那不是一个选择 -

首先,检查app/etc/是否有其他 XML文件。 Magento将解析它在此文件夹中找到的任何 XML文件。我见过像下面这样的旅行的人

$ ls app/etc/*.xml
local.xml
local.backup.xml

Magento会解析local.xmllocal.backup.xml,备份值会覆盖local.xml中的新值。另外,请确保您使用的是您认为自己的local.xml。 Magento在以下位置加载本地配置。添加一些临时调试以确保它正在执行您认为正在执行的操作。

#File: app/code/core/Mage/Core/Model/Config.php
public function loadBase()
{
    $etcDir = $this->getOptions()->getEtcDir();
    $files = glob($etcDir.DS.'*.xml');
    $this->loadFile(current($files));
    while ($file = next($files)) {
        var_dump($file);
        $merge = clone $this->_prototype;
        $merge->loadFile($file);
        $this->extend($merge);
    }
    if (in_array($etcDir.DS.'local.xml', $files)) {
        $this->_isLocalConfigLoaded = true;
    }
    return $this;
}

其次,清除缓存后,请确保Magento重新加载配置。添加一些临时调试到

#File: app/code/core/Mage/Core/Model/Config.php
public function init($options=array())
{
    $this->setCacheChecksum(null);
    $this->_cacheLoadedSections = array();
    $this->setOptions($options);
    $this->loadBase();

    $cacheLoad = $this->loadModulesCache();
    if ($cacheLoad) {
        var_dump("Loaded Config from Cache");
        return $this;
    }
    else
    {
        var_dump("Reloading configuration");     
    }

    $this->loadModules();
    $this->loadDb();
    $this->saveCache();
    return $this;
}

最后,如果您怀疑问题是基于文件的缓存未清除,请删除

中的一些调试代码
#File: app/code/core/Mage/Core/Model/Config/Options.php
public function getCacheDir()
{
    //$dir = $this->getDataSetDefault('cache_dir', $this->getVarDir().DS.'cache');
    $dir = $this->_data['cache_dir'];
    $this->createDirIfNotExists($dir);
    var_dump($dir);
    return $dir;
}

这将让你知道Magento读取的缓存目录 - 如果Magento无法读取本地var,它将弹出到根级/var/文件夹。