/** * Method for deletion keys by template * * ATTENTION: if key contains spaces, for example 'THIS IS KEY::ID:50d98ld', * then in cache it will be saved as 'THIS_IS_KEY::ID:50d98ld'. So, template * for that key deletion must be look like - 'THIS_IS_KEY'. * Deletion can be made by substring, containing in keys. For example * '_KEY::ID'. * * @param string $tpl Substring containing in needed keys * @return bool */ public function delByTemplate($tpl) { try { $cache = new MemcacheRaw(); $cache->delByTemplate($tpl)->disconnect(); return true; } catch (Exception $e) { return false; } }
/** * @covers Veles\Cache\Adapters\MemcacheRaw::getSlabs * @covers Veles\Cache\Adapters\MemcacheRaw::delByTemplate * @covers Veles\Cache\Adapters\MemcacheRaw::delete */ public function testDelByTemplate() { $keys = []; $prefix = uniqid(); for ($i = 0; $i < 5; ++$i) { $key = uniqid("VELES::UNIT-TEST::{$prefix}::"); $value = uniqid(); Cache::set($key, $value, 10); $keys[] = $key; } $template = "VELES::UNIT-TEST::{$prefix}::"; $object = new MemcacheRaw(); $result = $object->delByTemplate($template); $msg = 'MemcacheRaw::delByTemplate return wrong result!'; $this->assertTrue($result instanceof MemcacheRaw, $msg); $expected = $result = false; foreach ($keys as $key) { if (Cache::has($key)) { $result = true; break; } } $msg = 'MemcacheRaw::delByTemplate malfunction!'; $this->assertSame($expected, $result, $msg); }