add prefix option to OC_Cache::clear
This commit is contained in:
parent
2b74778958
commit
51566e87c7
|
@ -99,12 +99,13 @@ class OC_Cache {
|
|||
}
|
||||
|
||||
/**
|
||||
* clear the user cache
|
||||
* clear the user cache of all entries starting with a prefix
|
||||
* @param string prefix (optional)
|
||||
* @return bool
|
||||
*/
|
||||
static public function clear() {
|
||||
static public function clear($prefix='') {
|
||||
$user_cache = self::getUserCache();
|
||||
return $user_cache->clear();
|
||||
return $user_cache->clear($prefix);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -43,14 +43,15 @@ class OC_Cache_APC {
|
|||
return apc_delete($this->getNamespace().$key);
|
||||
}
|
||||
|
||||
public function clear(){
|
||||
$ns = $this->getNamespace();
|
||||
public function clear($prefix=''){
|
||||
$ns = $this->getNamespace().$prefix;
|
||||
$cache = apc_cache_info('user');
|
||||
foreach($cache['cache_list'] as $entry) {
|
||||
if (strpos($entry['info'], $ns) === 0) {
|
||||
apc_delete($entry['info']);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if(!function_exists('apc_exists')) {
|
||||
|
|
|
@ -46,8 +46,8 @@ class OC_Cache_Broker {
|
|||
return $this->slow_cache->remove($key);
|
||||
}
|
||||
|
||||
public function clear(){
|
||||
$this->fast_cache->clear();
|
||||
$this->slow_cache->clear();
|
||||
public function clear($prefix=''){
|
||||
$this->fast_cache->clear($prefix);
|
||||
$this->slow_cache->clear($prefix);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -62,15 +62,16 @@ class OC_Cache_File{
|
|||
return $storage->unlink($key);
|
||||
}
|
||||
|
||||
public function clear(){
|
||||
public function clear($prefix=''){
|
||||
$storage = $this->getStorage();
|
||||
if($storage and $storage->is_dir('/')){
|
||||
$dh=$storage->opendir('/');
|
||||
while($file=readdir($dh)){
|
||||
if($file!='.' and $file!='..'){
|
||||
if($file!='.' and $file!='..' and ($prefix==='' || strpos($file, $prefix) === 0)){
|
||||
$storage->unlink('/'.$file);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,7 +43,8 @@ class OC_Cache_XCache {
|
|||
return xcache_unset($this->getNamespace().$key);
|
||||
}
|
||||
|
||||
public function clear(){
|
||||
return xcache_unset_by_prefix($this->getNamespace());
|
||||
public function clear($prefix=''){
|
||||
xcache_unset_by_prefix($this->getNamespace().$prefix);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,6 +42,27 @@ abstract class Test_Cache extends UnitTestCase {
|
|||
$this->assertNull($this->instance->get('not_set'),'Unset value not equal to null');
|
||||
|
||||
$this->assertTrue($this->instance->remove('value1'));
|
||||
$this->assertFalse($this->instance->hasKey('value1'));
|
||||
}
|
||||
|
||||
function testClear(){
|
||||
$value='ipsum lorum';
|
||||
$this->instance->set('1_value1',$value);
|
||||
$this->instance->set('1_value2',$value);
|
||||
$this->instance->set('2_value1',$value);
|
||||
$this->instance->set('3_value1',$value);
|
||||
|
||||
$this->assertTrue($this->instance->clear('1_'));
|
||||
$this->assertFalse($this->instance->hasKey('1_value1'));
|
||||
$this->assertFalse($this->instance->hasKey('1_value2'));
|
||||
$this->assertTrue($this->instance->hasKey('2_value1'));
|
||||
$this->assertTrue($this->instance->hasKey('3_value1'));
|
||||
|
||||
$this->assertTrue($this->instance->clear());
|
||||
$this->assertFalse($this->instance->hasKey('1_value1'));
|
||||
$this->assertFalse($this->instance->hasKey('1_value2'));
|
||||
$this->assertFalse($this->instance->hasKey('2_value1'));
|
||||
$this->assertFalse($this->instance->hasKey('3_value1'));
|
||||
}
|
||||
|
||||
function testTTL(){
|
||||
|
|
Loading…
Reference in New Issue