(bug 28752) XCache doesn't work in CLI mode
authorChad Horohoe <demon@users.mediawiki.org>
Fri, 29 Apr 2011 22:40:12 +0000 (22:40 +0000)
committerChad Horohoe <demon@users.mediawiki.org>
Fri, 29 Apr 2011 22:40:12 +0000 (22:40 +0000)
RELEASE-NOTES
includes/objectcache/XCacheBagOStuff.php

index 07d1669..7d4be66 100644 (file)
@@ -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.
index fc9c355..6561a5f 100644 (file)
@@ -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;
        }
 }