diff options
Diffstat (limited to 'maintenance/mcc.php')
-rw-r--r-- | maintenance/mcc.php | 79 |
1 files changed, 67 insertions, 12 deletions
diff --git a/maintenance/mcc.php b/maintenance/mcc.php index e07e62db..7b7b7614 100644 --- a/maintenance/mcc.php +++ b/maintenance/mcc.php @@ -23,13 +23,64 @@ */ /** */ -require_once( __DIR__ . '/commandLine.inc' ); +require_once __DIR__ . '/commandLine.inc'; -$mcc = new MWMemcached( array( 'persistent' => true/*, 'debug' => true*/ ) ); -$mcc->set_servers( $wgMemCachedServers ); -# $mcc->set_debug( true ); +$options = getopt( '', array( 'debug', 'help', 'cache:' ) ); -function mccShowHelp( $command ) { +$debug = isset( $options['debug'] ); +$help = isset( $options['help'] ); +$cache = isset( $options['cache'] ) ? $options['cache'] : null; + +if ( $help ) { + mccShowUsage(); + exit( 0 ); +} +$mcc = new MWMemcached( array( + 'persistent' => true, + 'debug' => $debug, +) ); + +if ( $cache ) { + if ( !isset( $wgObjectCaches[$cache] ) ) { + print "MediaWiki isn't configured with a cache named '$cache'"; + exit( 1 ); + } + $servers = $wgObjectCaches[$cache]['servers']; +} elseif ( $wgMainCacheType === CACHE_MEMCACHED ) { + $mcc->set_servers( $wgMemCachedServers ); +} elseif ( isset( $wgObjectCaches[$wgMainCacheType]['servers'] ) ) { + $mcc->set_servers( $wgObjectCaches[$wgMainCacheType]['servers'] ); +} else { + print "MediaWiki isn't configured for Memcached usage\n"; + exit( 1 ); +} + +/** + * Show this command line tool usage. + */ +function mccShowUsage() { + echo <<<EOF +Usage: + mcc.php [--debug] + mcc.php --help + +MemCached Command (mcc) is an interactive command tool that let you interact +with the MediaWiki memcached cache. + +Options: + --debug Set debug mode on the memcached connection. + --help This help screen. + +Interactive commands: + +EOF; + print "\t"; + print str_replace( "\n", "\n\t", mccGetHelp( false ) ); + print "\n"; +} + +function mccGetHelp( $command ) { + $output = ''; $commandList = array( 'get' => 'grabs something', 'getsock' => 'lists sockets', @@ -48,13 +99,15 @@ function mccShowHelp( $command ) { if ( $command === 'fullhelp' ) { $max_cmd_len = max( array_map( 'strlen', array_keys( $commandList ) ) ); foreach ( $commandList as $cmd => $desc ) { - printf( "%-{$max_cmd_len}s: %s\n", $cmd, $desc ); + $output .= sprintf( "%-{$max_cmd_len}s: %s\n", $cmd, $desc ); } } elseif ( isset( $commandList[$command] ) ) { - print "$command: $commandList[$command]\n"; + $output .= "$command: $commandList[$command]\n"; } else { - print "$command: command does not exist or no help for it\n"; + $output .= "$command: command does not exist or no help for it\n"; } + + return $output; } do { @@ -63,7 +116,9 @@ do { $quit = false; $line = Maintenance::readconsole(); - if ( $line === false ) exit; + if ( $line === false ) { + exit; + } $args = explode( ' ', $line ); $command = array_shift( $args ); @@ -72,8 +127,8 @@ do { switch ( $command ) { case 'help': // show an help message - mccShowHelp( array_shift( $args ) ); - break; + print mccGetHelp( array_shift( $args ) ); + break; case 'get': $sub = ''; @@ -93,7 +148,7 @@ do { } else { var_dump( $res ); } - break; + break; case 'getsock': $res = $mcc->get( $args[0] ); |