From 8add05d668d630e884f202b30811fe8b853097a6 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Wed, 27 Jun 2007 17:02:21 +0200 Subject: =?UTF-8?q?Unterst=C3=BCtzung=20f=C3=BCr=20XCache=20zur=C3=BCckpor?= =?UTF-8?q?tiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- includes/AutoLoader.php | 1 + includes/BagOStuff.php | 47 +++++++++++++++++++++++++++++++++++++++++++++++ includes/ObjectCache.php | 2 ++ 3 files changed, 50 insertions(+) (limited to 'includes') diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index 72a71c71..3d7bcdf3 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -244,6 +244,7 @@ function __autoload($className) { 'WikiError' => 'includes/WikiError.php', 'WikiErrorMsg' => 'includes/WikiError.php', 'WikiXmlError' => 'includes/WikiError.php', + 'XCacheBagOStuff' => 'includes/BagOStuff.php', 'Xml' => 'includes/Xml.php', 'ZhClient' => 'includes/ZhClient.php', 'memcached' => 'includes/memcached-client.php', diff --git a/includes/BagOStuff.php b/includes/BagOStuff.php index 2a04b9dd..c0680793 100644 --- a/includes/BagOStuff.php +++ b/includes/BagOStuff.php @@ -515,6 +515,53 @@ class APCBagOStuff extends BagOStuff { } +/** + * Wrapper for XCache object caching functions; identical interface + * to the APC wrapper + */ +class XCacheBagOStuff extends APCBagOStuff { + + /** + * Get a value from the XCache object cache + * + * @param string $key Cache key + * @return mixed + */ + public function get( $key ) { + $val = xcache_get( $key ); + if( is_string( $val ) ) + $val = unserialize( $val ); + return $val; + } + + /** + * Store a value in the XCache object cache + * + * @param string $key Cache key + * @param mixed $value Object to store + * @param int $expire Expiration time + * @return bool + */ + public function set( $key, $value, $expire = 0 ) { + xcache_set( $key, serialize( $value ), $expire ); + return true; + } + + /** + * Remove a value from the XCache object cache + * + * @param string $key Cache key + * @param int $time Not used in this implementation + * @return bool + */ + public function delete( $key, $time = 0 ) { + xcache_unset( $key ); + return true; + } + +} + + /** * This is a wrapper for eAccelerator's shared memory functions. * diff --git a/includes/ObjectCache.php b/includes/ObjectCache.php index a493a75c..3b43dd53 100644 --- a/includes/ObjectCache.php +++ b/includes/ObjectCache.php @@ -70,6 +70,8 @@ function &wfGetCache( $inputType ) { $wgCaches[CACHE_ACCEL] = new eAccelBagOStuff; } elseif ( function_exists( 'apc_fetch') ) { $wgCaches[CACHE_ACCEL] = new APCBagOStuff; + } elseif( function_exists( 'xcache_get' ) ) { + $wgCaches[CACHE_ACCEL] = new XCacheBagOStuff; } elseif ( function_exists( 'mmcache_get' ) ) { $wgCaches[CACHE_ACCEL] = new TurckBagOStuff; } else { -- cgit v1.2.2