From 531c1c509c32d400f0eebfd436ac608a6b6e35a7 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Mon, 25 Jun 2012 17:42:50 +0200 Subject: [PATCH] Cache: Add APC and XCache to global cache handler --- lib/cache.php | 10 ++++++++++ lib/cache/apc.php | 11 ++++++++++- lib/cache/xcache.php | 11 ++++++++++- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/lib/cache.php b/lib/cache.php index e6f2beeb306..1f269174fad 100644 --- a/lib/cache.php +++ b/lib/cache.php @@ -12,7 +12,17 @@ class OC_Cache { static public function getGlobalCache() { if (!self::$global_cache) { + $fast_cache = null; + if (!$fast_cache && function_exists('xcache_set')) { + $fast_cache = new OC_Cache_XCache(true); + } + if (!$fast_cache && function_exists('apc_store')) { + $fast_cache = new OC_Cache_APC(true); + } self::$global_cache = new OC_Cache_FileGlobal(); + if ($fast_cache) { + self::$global_cache = new OC_Cache_Broker($fast_cache, self::$global_cache); + } } return self::$global_cache; } diff --git a/lib/cache/apc.php b/lib/cache/apc.php index b1ce87f5267..6cf47d0c158 100644 --- a/lib/cache/apc.php +++ b/lib/cache/apc.php @@ -7,11 +7,20 @@ */ class OC_Cache_APC { + protected $prefix; + + public function __construct($global = false) { + $this->prefix = OC_Util::getInstanceId().'/'; + if (!$global) { + $this->prefix .= OC_User::getUser().'/'; + } + } + /** * entries in APC gets namespaced to prevent collisions between owncloud instances and users */ protected function getNameSpace() { - return OC_Util::getInstanceId().'/'.OC_User::getUser().'/'; + return $this->prefix; } public function get($key) { diff --git a/lib/cache/xcache.php b/lib/cache/xcache.php index b57338929e0..bd55cee8f6b 100644 --- a/lib/cache/xcache.php +++ b/lib/cache/xcache.php @@ -7,11 +7,20 @@ */ class OC_Cache_XCache { + protected $prefix; + + public function __construct($global = false) { + $this->prefix = OC_Util::getInstanceId().'/'; + if (!$global) { + $this->prefix .= OC_User::getUser().'/'; + } + } + /** * entries in XCache gets namespaced to prevent collisions between owncloud instances and users */ protected function getNameSpace() { - return OC_Util::getInstanceId().'/'.OC_User::getUser().'/'; + return $this->prefix; } public function get($key) { -- 2.39.5