From 112115813a29d92a2d19ebe601a209afb9d1b82b Mon Sep 17 00:00:00 2001 From: "Mr. E23" Date: Sun, 25 Jan 2004 00:53:07 +0000 Subject: [PATCH] Added use of a FakeMemCachedClient in case memcached isn't working for some reason. Adds some speed as well as avoids a php segfault on certain setups when memcached is enabled but not available. --- includes/Setup.php | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/includes/Setup.php b/includes/Setup.php index 26f4dc31e3..93bd46cded 100644 --- a/includes/Setup.php +++ b/includes/Setup.php @@ -52,8 +52,31 @@ class MemCachedClientforWiki extends memcached { } } -$wgMemc = new MemCachedClientforWiki( array('persistant' => true) ); +# 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 ); @@ -62,7 +85,10 @@ if( $wgUseMemCached ) { if ( !$wgMemc->set( "test", "", 0 ) ) { wfDebug( "Memcached failed setup test - connection error?\n" ); $wgUseMemCached = false; + $wgMemc = new FakeMemCachedClient(); } +} else { + $wgMemc = new FakeMemCachedClient(); } wfProfileOut( "$fname-memcached" ); -- 2.20.1