From: Chad Horohoe Date: Fri, 29 Apr 2011 22:40:12 +0000 (+0000) Subject: (bug 28752) XCache doesn't work in CLI mode X-Git-Tag: 1.31.0-rc.0~30503 X-Git-Url: http://git.cyclocoop.org/fichier?a=commitdiff_plain;h=2323830a037317a0d466807d070eda4b0533c3b9;p=lhc%2Fweb%2Fwiklou.git (bug 28752) XCache doesn't work in CLI mode --- diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 07d166948f..7d4be66ba4 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -255,6 +255,7 @@ PHP if you have not done so prior to upgrading MediaWiki. left-to-right. * (bug 28719) Do not call mLinkHolders __destruct explicitly * (bug 21196) Article::getContributors() no longer fail on PostgreSQL. +* (bug 28752) XCache doesn't work in CLI mode. === API changes in 1.18 === * (bug 26339) Throw warning when truncating an overlarge API result. diff --git a/includes/objectcache/XCacheBagOStuff.php b/includes/objectcache/XCacheBagOStuff.php index fc9c355753..6561a5f6a5 100644 --- a/includes/objectcache/XCacheBagOStuff.php +++ b/includes/objectcache/XCacheBagOStuff.php @@ -7,6 +7,18 @@ * @ingroup Cache */ class XCacheBagOStuff extends BagOStuff { + /** + * Are we operating in CLI mode? Since xcache doesn't work then and they + * don't want to change that + * @see bug 28752 + * @var bool + */ + private $isCli = false; + + public function __construct() { + $this->isCli = php_sapi_name() == 'cli'; + } + /** * Get a value from the XCache object cache * @@ -14,6 +26,9 @@ class XCacheBagOStuff extends BagOStuff { * @return mixed */ public function get( $key ) { + if( $this->isCli ) { + return false; + } $val = xcache_get( $key ); if ( is_string( $val ) ) { @@ -32,8 +47,9 @@ class XCacheBagOStuff extends BagOStuff { * @return bool */ public function set( $key, $value, $expire = 0 ) { - xcache_set( $key, serialize( $value ), $expire ); - + if( !$this->isCli ) { + xcache_set( $key, serialize( $value ), $expire ); + } return true; } @@ -45,8 +61,9 @@ class XCacheBagOStuff extends BagOStuff { * @return bool */ public function delete( $key, $time = 0 ) { - xcache_unset( $key ); - + if( !$this->isCli ) { + xcache_unset( $key ); + } return true; } }