【问题标题】:Flushing Magento cache刷新 Magento 缓存
【发布时间】:2018-01-09 10:14:54
【问题描述】:

我有一个问题: 当我尝试像这样以编程方式刷新 Magento 缓存时:

$types=array('config','layout','block_html','translate','collections','eav','config_api','config_api2');
foreach($types as $type) {
    $c = Mage::app()->getCacheInstance()->cleanType($type);
    Mage::dispatchEvent('adminhtml_cache_refresh_type', array('type' => $type));
}

[source]

我已经阅读了关于 Magento 缓存的 this article 并且它正在刷新,但我仍然缺少一些东西。

上面的方法应该和“Flush Magento Cache”按钮一样,但在我的例子中不是这样。当我运行一个脚本时,我正在保存一个新控制器,但是在使用上述方式(以及我已经尝试过的许多其他方式)以编程方式刷新缓存后它不起作用。

但是,只要我在脚本工作的中间从管理面板手动执行相同操作,它就会开始正常工作。

有什么想法吗?如果我将脚本代码放在这里有帮助吗?

提前致谢!

【问题讨论】:

  • 这是否意味着您在刷新缓存后看不到新的控制器类或控制器的 url 不起作用并显示 404?
  • 我应该在哪里看到我的控制器?你的意思是在管理面板中? - 不,自动缓存刷新后它不存在。并在手册出现后。

标签: php magento caching


【解决方案1】:

您的代码似乎只清除了块缓存,对于新的控制器/类,您需要删除缓存文件夹,您可以像这样以编程方式进行操作

/**
 * Remove cache folders:
 */
public function cleanFiles() {
    try {
        flush();
        //cache
        $dir = Mage::getBaseDir('cache');
        $items = array_diff(scandir($dir), array('..', '.'));
        foreach ($items as $item) {
            $path = $dir . DIRECTORY_SEPARATOR . $item;
            is_dir($path) ? $this->_rrmdir($path) : unlink($path);
        }
    } catch (Exception $e) {
        die("[ERROR:" . $e->getMessage() . "]" . PHP_EOL);
    }
}

/**
 * Removes a directory and all elements contained
 * @param string $dir directory to remove
 */
private function _rrmdir($dir) {
    if (is_dir($dir)) {
        $objects = array_diff(scandir($dir), array('..', '.'));
        foreach ($objects as $object) {
            $path = $dir . DIRECTORY_SEPARATOR . $object;
            is_dir($path) ? $this->_rrmdir($path) : unlink($path);
        }
        reset($objects);
        rmdir($dir);
    }
}

【讨论】:

  • 我今天给它一个机会。谢谢您的回复。希望它会有所帮助
  • 希望对您的问题有所帮助,如果可行,请将解决方案标记为已接受的答案,祝您好运
  • 这个解决方案相当于另一个按钮(Flush Cache storage)。但是我在想的原因是,当管理面板中的按钮起作用时,为什么与我的问题中的功能相同的左按钮(刷新 Magento 缓存)不起作用。是否有任何类型的会话正在运行并且无法删除,或者有什么不同?
  • Flush Magento 缓存清除了我上面提到的块缓存,或者更具体地说,Magento 控制的东西。而刷新缓存存储将删除缓存文件夹。更详细的答案在这里stackoverflow.com/questions/5955365/… 它最终对你有用吗?如果是,请接受它作为答案
  • 但我想删除我的控制器的缓存而不删除所有缓存
猜你喜欢
  • 2012-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-30
  • 1970-01-01
  • 2015-03-22
  • 2016-07-20
  • 1970-01-01
相关资源
最近更新 更多