X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2Fobjectcache%2FXCacheBagOStuff.php;h=0f45db7348c779e77523174f6fc88dd01448fcbb;hb=61edb7525f9d496f8ff029d8047dcb6edef29852;hp=6c8828920351ca8c42547a48bd64acfb6a0a7fb6;hpb=001152e597390a45bffb9a60bf7ff4cd4009be88;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/objectcache/XCacheBagOStuff.php b/includes/objectcache/XCacheBagOStuff.php index 6c88289203..0f45db7348 100644 --- a/includes/objectcache/XCacheBagOStuff.php +++ b/includes/objectcache/XCacheBagOStuff.php @@ -31,10 +31,11 @@ class XCacheBagOStuff extends BagOStuff { /** * Get a value from the XCache object cache * - * @param $key String: cache key + * @param string $key cache key + * @param $casToken mixed: cas token * @return mixed */ - public function get( $key ) { + public function get( $key, &$casToken = null ) { $val = xcache_get( $key ); if ( is_string( $val ) ) { @@ -43,6 +44,8 @@ class XCacheBagOStuff extends BagOStuff { } else { $val = unserialize( $val ); } + } elseif ( is_null( $val ) ) { + return false; } return $val; @@ -51,9 +54,9 @@ class XCacheBagOStuff extends BagOStuff { /** * Store a value in the XCache object cache * - * @param $key String: cache key + * @param string $key cache key * @param $value Mixed: object to store - * @param $expire Int: expiration time + * @param int $expire expiration time * @return bool */ public function set( $key, $value, $expire = 0 ) { @@ -65,11 +68,23 @@ class XCacheBagOStuff extends BagOStuff { return true; } + /** + * @param $casToken mixed + * @param $key string + * @param $value mixed + * @param $exptime int + * @return bool + */ + public function cas( $casToken, $key, $value, $exptime = 0 ) { + // Can't find any documentation on xcache cas + throw new MWException( "CAS is not implemented in " . __CLASS__ ); + } + /** * Remove a value from the XCache object cache * - * @param $key String: cache key - * @param $time Int: not used in this implementation + * @param string $key cache key + * @param int $time not used in this implementation * @return bool */ public function delete( $key, $time = 0 ) { @@ -77,6 +92,21 @@ class XCacheBagOStuff extends BagOStuff { return true; } + /** + * Merge an item. + * XCache does not seem to support any way of performing CAS - this however will + * provide a way to perform CAS-like functionality. + * + * @param $key string + * @param $callback closure Callback method to be executed + * @param int $exptime Either an interval in seconds or a unix timestamp for expiry + * @param int $attempts The amount of times to attempt a merge in case of failure + * @return bool success + */ + public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) { + return $this->mergeViaLock( $key, $callback, $exptime, $attempts ); + } + public function incr( $key, $value = 1 ) { return xcache_inc( $key, $value ); }