X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/19e297c21b10b1b8a3acad5e73fc71dcb35db44a..6932310fd58ebef145fa01eb76edf7150284d8ea:/maintenance/mcc.php diff --git a/maintenance/mcc.php b/maintenance/mcc.php index a8c79a72..784ba0ea 100644 --- a/maintenance/mcc.php +++ b/maintenance/mcc.php @@ -2,20 +2,87 @@ /** * memcached diagnostic tool * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * * @file * @todo document * @ingroup Maintenance */ -/** */ -require_once( dirname( __FILE__ ) . '/commandLine.inc' ); +$optionsWithArgs = [ 'cache' ]; +$optionsWithoutArgs = [ + 'debug', 'help' +]; +require_once __DIR__ . '/commandLine.inc'; + +$debug = isset( $options['debug'] ); +$help = isset( $options['help'] ); +$cache = isset( $options['cache'] ) ? $options['cache'] : null; + +if ( $help ) { + mccShowUsage(); + exit( 0 ); +} +$mcc = new MemcachedClient( [ + '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 ); +} -$mcc = new MWMemcached( array( 'persistant' => true/*, 'debug' => true*/ ) ); -$mcc->set_servers( $wgMemCachedServers ); -# $mcc->set_debug( true ); +/** + * Show this command line tool usage. + */ +function mccShowUsage() { + echo << 'grabs something', 'getsock' => 'lists sockets', 'set' => 'changes something', @@ -26,20 +93,22 @@ function mccShowHelp( $command ) { 'exit' => 'exit mcc', 'quit' => 'exit mcc', 'help' => 'help about a command', - ); + ]; if ( !$command ) { $command = 'fullhelp'; } 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 { @@ -48,7 +117,9 @@ do { $quit = false; $line = Maintenance::readconsole(); - if ( $line === false ) exit; + if ( $line === false ) { + exit; + } $args = explode( ' ', $line ); $command = array_shift( $args ); @@ -57,8 +128,8 @@ do { switch ( $command ) { case 'help': // show an help message - mccShowHelp( array_shift( $args ) ); - break; + print mccGetHelp( array_shift( $args ) ); + break; case 'get': $sub = ''; @@ -78,7 +149,7 @@ do { } else { var_dump( $res ); } - break; + break; case 'getsock': $res = $mcc->get( $args[0] );