Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Prefixing group names in MemcacheEgine

  • Loading branch information...
commit 98b14ff14447d43f76f28416a7490850b35ca7ef 1 parent 957322e
@lorenzo lorenzo authored
View
22 lib/Cake/Cache/Engine/MemcacheEngine.php
@@ -28,6 +28,14 @@
class MemcacheEngine extends CacheEngine {
/**
+ * Contains the compiled group names
+ * (prefixed witht the global configuration prefix)
+ *
+ * @var array
+ **/
+ protected $_compiledGroupNames = array();
+
+/**
* Memcache wrapper.
*
* @var Memcache
@@ -243,9 +251,17 @@ public function connect($host, $port = 11211) {
* @return array
**/
public function groups() {
- $groups = $this->_Memcache->get($this->settings['groups']);
- if (count($groups) !== count($this->settings['groups'])) {
+ $groups = $this->_compiledGroupNames;
+ if (empty($groups)) {
foreach ($this->settings['groups'] as $group) {
+ $groups[] = $this->settings['prefix'] . $group;
+ }
+ $this->_compiledGroupNames = $groups;
+ }
+
+ $groups = $this->_Memcache->get($groups);
+ if (count($groups) !== count($this->settings['groups'])) {
+ foreach ($this->_compiledGroupNames as $group) {
if (!isset($groups[$group])) {
$this->_Memcache->set($group, 1, false, 0);
$groups[$group] = 1;
@@ -269,6 +285,6 @@ public function groups() {
* @return boolean success
**/
public function clearGroup($group) {
- return (bool) $this->_Memcache->increment($group);
+ return (bool) $this->_Memcache->increment($this->settings['prefix'] . $group);
}
}
View
5 lib/Cake/Test/Case/Cache/Engine/MemcacheEngineTest.php
@@ -413,12 +413,13 @@ public function testGroupReadWrite() {
Cache::config('memcache_groups', array(
'engine' => 'Memcache',
'duration' => 3600,
- 'groups' => array('group_a', 'group_b')
+ 'groups' => array('group_a', 'group_b'),
+ 'prefix' => 'test_'
));
Cache::config('memcache_helper', array(
'engine' => 'Memcache',
'duration' => 3600,
- 'prefix' => ''
+ 'prefix' => 'test_'
));
$this->assertTrue(Cache::write('test_groups', 'value', 'memcache_groups'));
$this->assertEquals('value', Cache::read('test_groups', 'memcache_groups'));
Please sign in to comment.
Something went wrong with that request. Please try again.