diff options
author | Bart Visscher <bartv@thisnet.nl> | 2012-06-05 23:19:28 +0200 |
---|---|---|
committer | Bart Visscher <bartv@thisnet.nl> | 2012-06-05 23:19:28 +0200 |
commit | fc56a668ce756811f8b98557548fff2bf34799a4 (patch) | |
tree | 413cc13b348fad3c59fe0b24ed29d166a101d12a /lib/cache | |
parent | 86961b64451ac45270274d4de07cd7fc1122521b (diff) | |
download | nextcloud-server-fc56a668ce756811f8b98557548fff2bf34799a4.tar.gz nextcloud-server-fc56a668ce756811f8b98557548fff2bf34799a4.zip |
Add OC_Cache implementation for APC
Diffstat (limited to 'lib/cache')
-rw-r--r-- | lib/cache/apc.php | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/cache/apc.php b/lib/cache/apc.php new file mode 100644 index 00000000000..f814afbe494 --- /dev/null +++ b/lib/cache/apc.php @@ -0,0 +1,46 @@ +<?php +/** + * Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +class OC_Cache_APC { + /** + * entries in APC gets namespaced to prevent collisions between owncloud instances and users + */ + protected function getNameSpace() { + return OC_Util::getInstanceId().'/'.OC_User::getUser().'/'; + } + + public function get($key) { + $result = apc_fetch($this->getNamespace().$key, $success); + if (!$success) { + return null; + } + return $result; + } + + public function set($key, $value, $ttl=0) { + return apc_store($this->getNamespace().$key, $value, $ttl); + } + + public function hasKey($key) { + return apc_exists($this->getNamespace().$key); + } + + public function remove($key) { + return apc_delete($this->getNamespace().$key); + } + + public function clear(){ + $ns = $this->getNamespace(); + $cache = apc_cache_info('user'); + foreach($cache['cache_list'] as $entry) { + if (strpos($entry['info'], $ns) === 0) { + apc_delete($entry['info']); + } + } + } +} |