|
|
|
@ -268,20 +268,18 @@ class rcube_cache
|
|
|
|
|
// to have data in consistent state. Keeping the index consistent
|
|
|
|
|
// is needed for keys delete operation when we delete all keys or by prefix.
|
|
|
|
|
}
|
|
|
|
|
else if ($this->type == 'memcache') {
|
|
|
|
|
else {
|
|
|
|
|
$ckey = $this->ckey($key);
|
|
|
|
|
$data = $this->db->get($ckey);
|
|
|
|
|
|
|
|
|
|
if ($this->debug) {
|
|
|
|
|
$this->debug('get', $ckey, $data);
|
|
|
|
|
if ($this->type == 'memcache') {
|
|
|
|
|
$data = $this->db->get($ckey);
|
|
|
|
|
}
|
|
|
|
|
else if ($this->type == 'apc') {
|
|
|
|
|
$data = apc_fetch($ckey);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if ($this->type == 'apc') {
|
|
|
|
|
$ckey = $this->ckey($key);
|
|
|
|
|
$data = apc_fetch($ckey);
|
|
|
|
|
|
|
|
|
|
if ($this->debug) {
|
|
|
|
|
$this->debug('fetch', $ckey, $data);
|
|
|
|
|
$this->debug('get', $ckey, $data);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -473,21 +471,21 @@ class rcube_cache
|
|
|
|
|
{
|
|
|
|
|
if ($this->type == 'memcache') {
|
|
|
|
|
$result = $this->db->replace($key, $data, MEMCACHE_COMPRESSED, $this->ttl);
|
|
|
|
|
if (!$result)
|
|
|
|
|
$result = $this->db->set($key, $data, MEMCACHE_COMPRESSED, $this->ttl);
|
|
|
|
|
|
|
|
|
|
if ($this->debug) {
|
|
|
|
|
$this->debug('set', $key, $data, $result);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
$result = $this->db->set($key, $data, MEMCACHE_COMPRESSED, $this->ttl);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if ($this->type == 'apc') {
|
|
|
|
|
if (apc_exists($key))
|
|
|
|
|
if (apc_exists($key)) {
|
|
|
|
|
apc_delete($key);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$result = apc_store($key, $data, $this->ttl);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($this->debug) {
|
|
|
|
|
$this->debug('store', $key, $data, $result);
|
|
|
|
|
}
|
|
|
|
|
if ($this->debug) {
|
|
|
|
|
$this->debug('set', $key, $data, $result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($result) {
|
|
|
|
@ -503,22 +501,18 @@ class rcube_cache
|
|
|
|
|
*/
|
|
|
|
|
private function delete_record($key, $index=true)
|
|
|
|
|
{
|
|
|
|
|
$ckey = $this->ckey($key);
|
|
|
|
|
|
|
|
|
|
if ($this->type == 'memcache') {
|
|
|
|
|
$ckey = $this->ckey($key);
|
|
|
|
|
// #1488592: use 2nd argument
|
|
|
|
|
$result = $this->db->delete($ckey, 0);
|
|
|
|
|
|
|
|
|
|
if ($this->debug) {
|
|
|
|
|
$this->debug('delete', $ckey, null, $result);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
$ckey = $this->ckey($key);
|
|
|
|
|
$result = apc_delete($ckey);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($this->debug) {
|
|
|
|
|
$this->debug('delete', $ckey, null, $result);
|
|
|
|
|
}
|
|
|
|
|
if ($this->debug) {
|
|
|
|
|
$this->debug('delete', $ckey, null, $result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($result) {
|
|
|
|
@ -538,11 +532,7 @@ class rcube_cache
|
|
|
|
|
*/
|
|
|
|
|
private function write_index()
|
|
|
|
|
{
|
|
|
|
|
if (!$this->db) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($this->type == 'db') {
|
|
|
|
|
if (!$this->db || $this->type == 'db') {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -572,7 +562,7 @@ class rcube_cache
|
|
|
|
|
*/
|
|
|
|
|
private function load_index()
|
|
|
|
|
{
|
|
|
|
|
if (!$this->db) {
|
|
|
|
|
if (!$this->db || $this->type == 'db') {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -581,19 +571,16 @@ class rcube_cache
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$index_key = $this->ikey();
|
|
|
|
|
|
|
|
|
|
if ($this->type == 'memcache') {
|
|
|
|
|
$data = $this->db->get($index_key);
|
|
|
|
|
|
|
|
|
|
if ($this->debug) {
|
|
|
|
|
$this->debug('get', $index_key, $data);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if ($this->type == 'apc') {
|
|
|
|
|
$data = apc_fetch($index_key);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($this->debug) {
|
|
|
|
|
$this->debug('fetch', $index_key, $data);
|
|
|
|
|
}
|
|
|
|
|
if ($this->debug) {
|
|
|
|
|
$this->debug('get', $index_key, $data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->index = $data ? unserialize($data) : array();
|
|
|
|
|