summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2011-05-18 12:10:27 +0000
committeralecpl <alec@alec.pl>2011-05-18 12:10:27 +0000
commitb5f836e4af705679e13506c4edfe67ca3039f004 (patch)
tree47e45f24fdfdc6a3098b9e6dde3b3f47c852f76a
parent5cf5ee66c1fd3e86f009124aee58df26780ce311 (diff)
- Make memcached cache not system-wide
-rw-r--r--program/include/rcube_cache.php16
1 files changed, 14 insertions, 2 deletions
diff --git a/program/include/rcube_cache.php b/program/include/rcube_cache.php
index d38c237c8..dda09885c 100644
--- a/program/include/rcube_cache.php
+++ b/program/include/rcube_cache.php
@@ -208,7 +208,7 @@ class rcube_cache
}
if ($this->type == 'memcache') {
- $data = $this->db->get($key);
+ $data = $this->db->get($this->mc_key($key));
if ($data) {
$this->cache_sums[$key] = md5($data);
@@ -263,6 +263,7 @@ class rcube_cache
}
if ($this->type == 'memcache') {
+ $key = $this->mc_key($key);
$result = $this->db->replace($key, $data, MEMCACHE_COMPRESSED);
if (!$result)
$result = $this->db->set($key, $data, MEMCACHE_COMPRESSED);
@@ -313,7 +314,7 @@ class rcube_cache
}
if ($this->type == 'memcache') {
- return $this->db->delete($key);
+ return $this->db->delete($this->mc_key($key));
}
$this->db->query(
@@ -325,4 +326,15 @@ class rcube_cache
unset($this->cache_keys[$key]);
}
+
+ /**
+ * Creates per-user Memcache key
+ *
+ * @param string $key Cache key
+ * @access private
+ */
+ private function mc_key($key)
+ {
+ return sprintf('[%d]%s', $this->userid, $key);
+ }
}