Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用通配符清除CodeIgniter上的缓存_Codeigniter_Caching - Fatal编程技术网

使用通配符清除CodeIgniter上的缓存

使用通配符清除CodeIgniter上的缓存,codeigniter,caching,Codeigniter,Caching,CodeIgniter只指定了两种删除缓存的方法。它们是: $this->cache->delete('cache\u item\u id') -用于通过ID删除单个缓存 $this->cache->clean() -用于删除所有缓存 我的网站有静态和动态内容,我只想删除后者的所有缓存 我正在寻找类似于->delete(“latest*”)的东西,它将删除“latest video”、“latest video full”、“latest video music”、“latest article

CodeIgniter只指定了两种删除缓存的方法。它们是:

$this->cache->delete('cache\u item\u id')
-用于通过ID删除单个缓存

$this->cache->clean()
-用于删除所有缓存

我的网站有静态和动态内容,我只想删除后者的所有缓存


我正在寻找类似于
->delete(“latest*”)
的东西,它将删除“latest video”、“latest video full”、“latest video music”、“latest article”等内容。

有一个帮助程序可以执行此操作,您可以找到它

缓存是如何创建的

  $path = $CI->config->item('cache_path');
  $cache_path = ($path == '') ? APPPATH.'cache/' : $path;
  .
  .
  .
  $uri =  $CI->config->item('base_url').
    $CI->config->item('index_page').
    $CI->uri->uri_string();
  $cache_path .= md5($uri);
帮助程序自身

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

if ( ! function_exists('delete_cache'))
{
    function delete_cache($uri_string)
    {
        $CI =& get_instance();
        $path = $CI->config->item('cache_path');
        $cache_path = ($path == '') ? APPPATH.'cache/' : $path;

        $uri =  $CI->config->item('base_url').
            $CI->config->item('index_page').
            $uri_string;

        $cache_path .= md5($uri);

        if (file_exists($cache_path))
        {
            return unlink($cache_path);
        }
        else
        {
            return TRUE;
        }
    }
}

我想我已经让它工作了,调用
$this->cache->cache_info()将获取所有已保存缓存的多维数组。fetch数组中的数组键是
cache\u item\u id
,因此我可以执行以下操作

$wildcard = 'latest';
$all_cache = $this->cache->cache_info();
foreach ($all_cache as $cache_id => $cache) :
   if (strpos($cache_id, $wildcard) !== false) :
      $this->cache->delete($cache_id);
   endif;
endforeach;

我自己没有尝试过这个助手,但它似乎只用于基于文件的缓存,并且依赖于
$db['default']['cache\u on']=TRUE
可在
config/database.php
上找到。我正在使用APC,我正在通过
$this->cache->save('cache\u item\u id','data\u to\u cache')添加缓存