diff options
Diffstat (limited to 'maintenance/mctest.php')
-rw-r--r-- | maintenance/mctest.php | 41 |
1 files changed, 31 insertions, 10 deletions
diff --git a/maintenance/mctest.php b/maintenance/mctest.php index 691b832b..eda101e7 100644 --- a/maintenance/mctest.php +++ b/maintenance/mctest.php @@ -22,7 +22,7 @@ * @ingroup Maintenance */ -require_once( __DIR__ . '/Maintenance.php' ); +require_once __DIR__ . '/Maintenance.php'; /** * Maintenance script that makes several 'set', 'incr' and 'get' requests @@ -34,21 +34,42 @@ class mcTest extends Maintenance { public function __construct() { parent::__construct(); $this->mDescription = "Makes several 'set', 'incr' and 'get' requests on every" - . " memcached server and shows a report"; + . " memcached server and shows a report"; $this->addOption( 'i', 'Number of iterations', false, true ); + $this->addOption( 'cache', 'Use servers from this $wgObjectCaches store', false, true ); $this->addArg( 'server[:port]', 'Memcached server to test, with optional port', false ); } public function execute() { - global $wgMemCachedServers, $wgMemCachedTimeout; + global $wgMainCacheType, $wgMemCachedTimeout, $wgObjectCaches; + $cache = $this->getOption( 'cache' ); $iterations = $this->getOption( 'i', 100 ); - if ( $this->hasArg() ) { - $wgMemCachedServers = array( $this->getArg() ); + if ( $cache ) { + if ( !isset( $wgObjectCaches[$cache] ) ) { + $this->error( "MediaWiki isn't configured with a cache named '$cache'", 1 ); + } + $servers = $wgObjectCaches[$cache]['servers']; + } elseif ( $this->hasArg() ) { + $servers = array( $this->getArg() ); + } elseif ( $wgMainCacheType === CACHE_MEMCACHED ) { + global $wgMemCachedServers; + $servers = $wgMemCachedServers; + } elseif ( isset( $wgObjectCaches[$wgMainCacheType]['servers'] ) ) { + $servers = $wgObjectCaches[$wgMainCacheType]['servers']; + } else { + $this->error( "MediaWiki isn't configured for Memcached usage", 1 ); } - foreach ( $wgMemCachedServers as $server ) { - $this->output( $server . " ", $server ); + # find out the longest server string to nicely align output later on + $maxSrvLen = $servers ? max( array_map( 'strlen', $servers ) ) : 0; + + foreach ( $servers as $server ) { + $this->output( + str_pad( $server, $maxSrvLen ), + $server # output channel + ); + $mcc = new MemCachedClientforWiki( array( 'persistant' => true, 'timeout' => $wgMemCachedTimeout @@ -59,7 +80,7 @@ class mcTest extends Maintenance { $get = 0; $time_start = $this->microtime_float(); for ( $i = 1; $i <= $iterations; $i++ ) { - if ( !is_null( $mcc->set( "test$i", $i ) ) ) { + if ( $mcc->set( "test$i", $i ) ) { $set++; } } @@ -76,7 +97,7 @@ class mcTest extends Maintenance { } $exectime = $this->microtime_float() - $time_start; - $this->output( "set: $set incr: $incr get: $get time: $exectime", $server ); + $this->output( " set: $set incr: $incr get: $get time: $exectime", $server ); } } @@ -91,4 +112,4 @@ class mcTest extends Maintenance { } $maintClass = "mcTest"; -require_once( RUN_MAINTENANCE_IF_MAIN ); +require_once RUN_MAINTENANCE_IF_MAIN; |