-# Set up Memcached
-#
-class MemCachedClientforWiki extends memcached {
- function _debugprint( $text ) {
- wfDebug( "memcached: $text\n" );
- }
-}
-
-# FakeMemCachedClient imitates the API of memcached-client v. 0.1.2.
-# It acts as a memcached server with no RAM, that is, all objects are
-# cleared the moment they are set. All set operations succeed and all
-# get operations return null.
-
-class FakeMemCachedClient {
- function add ($key, $val, $exp = 0) { return true; }
- function decr ($key, $amt=1) { return null; }
- function delete ($key, $time = 0) { return false; }
- function disconnect_all () { }
- function enable_compress ($enable) { }
- function forget_dead_hosts () { }
- function get ($key) { return null; }
- function get_multi ($keys) { return array_pad(array(), count($keys), null); }
- function incr ($key, $amt=1) { return null; }
- function replace ($key, $value, $exp=0) { return false; }
- function run_command ($sock, $cmd) { return null; }
- function set ($key, $value, $exp=0){ return true; }
- function set_compress_threshold ($thresh){ }
- function set_debug ($dbg) { }
- function set_servers ($list) { }
-}
-
-if( $wgUseMemCached ) {
- $wgMemc = new MemCachedClientforWiki( array('persistant' => true) );
- $wgMemc->set_servers( $wgMemCachedServers );
- $wgMemc->set_debug( $wgMemCachedDebug );
-
- # Test it to see if it's working
- # This is necessary because otherwise wfMsg would be extremely inefficient
- if ( !$wgMemc->set( 'test', '', 0 ) ) {
- wfDebug( "Memcached failed setup test - connection error?\n" );
- $wgUseMemCached = false;
- $wgMemc = new FakeMemCachedClient();
- }
- $messageMemc = &$wgMemc;
-} else {
- $wgMemc = new FakeMemCachedClient();
-
- # Give the message cache a separate cache in the DB.
- # This is a speedup over separately querying every message used
- require_once( 'ObjectCache.php' );
- $messageMemc = new MediaWikiBagOStuff('objectcache');