summaryrefslogtreecommitdiff
path: root/maintenance/mcc.php
diff options
context:
space:
mode:
Diffstat (limited to 'maintenance/mcc.php')
-rw-r--r--maintenance/mcc.php79
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] );