API: documentation and cleanup.
[lhc/web/wiklou.git] / maintenance / mcc.php
old mode 100755 (executable)
new mode 100644 (file)
index 73fcbdb..b0302ab
@@ -3,20 +3,75 @@
  * memcached diagnostic tool
  *
  * @todo document
- * @package MediaWiki
- * @subpackage Maintenance
+ * @addtogroup Maintenance
  */
 
 /** */
 require_once( 'commandLine.inc' );
 require_once( 'memcached-client.php' );
 
-$mcc = new memcached( array('persistant' => true, 'debug' => true) );
+$mcc = new memcached( array('persistant' => true/*, 'debug' => true*/) );
 $mcc->set_servers( $wgMemCachedServers );
-$mcc->set_debug( true );
+#$mcc->set_debug( true );
+
+function mccShowHelp($command) {
+
+       if(! $command ) { $command = 'fullhelp'; }
+       $onlyone = true;
+
+       switch ( $command ) {
+
+               case 'fullhelp':
+                       // will show help for all commands
+                       $onlyone = false;
+
+               case 'get':
+                       print "get: grabs something\n";
+               if($onlyone) { break; }
+
+               case 'getsock':
+                       print "getsock: lists sockets\n";
+               if($onlyone) { break; }
+
+               case 'set':
+                       print "set: changes something\n";
+               if($onlyone) { break; }
+
+               case 'delete':
+                       print "delete: deletes something\n";
+               if($onlyone) { break; }
+
+               case 'history':
+                       print "history: show command line history\n";
+               if($onlyone) { break; }
+
+               case 'server':
+                       print "server: show current memcached server\n";
+               if($onlyone) { break; }
+
+               case 'dumpmcc':
+                       print "dumpmcc: shows the whole thing\n";
+               if($onlyone) { break; }
+
+               case 'exit':
+               case 'quit':
+                       print "exit or quit: exit mcc\n";
+               if($onlyone) { break; }
+
+               case 'help':
+                       print "help: help about a command\n";
+               if($onlyone) { break; }
+
+               default:
+                       if($onlyone) {
+                               print "$command: command does not exist or no help for it\n";
+                       }
+       }
+}
 
 do {
        $bad = false;
+       $showhelp = false;
        $quit = false;
 
        $line = readconsole( '> ' );
@@ -25,7 +80,12 @@ do {
        $args = explode( ' ', $line );
        $command = array_shift( $args );
 
+       // process command
        switch ( $command ) {
+               case 'help':
+                       // show an help message
+                       mccShowHelp(array_shift($args));
+               break;
 
                case 'get':
                        print "Getting {$args[0]}[{$args[1]}]\n";
@@ -41,7 +101,7 @@ do {
                        } else {
                                var_dump( $res );
                        }
-                       break;
+               break;
 
                case 'getsock':
                        $res = $mcc->get( $args[0] );
@@ -49,6 +109,15 @@ do {
                        var_dump( $sock );
                        break;
 
+               case 'server':
+                       $res = $mcc->get( $args[0] );
+                       $hv = $mcc->_hashfunc( $args[0] );
+                       for ( $i = 0; $i < 3; $i++ ) {
+                               print $mcc->_buckets[$hv % $mcc->_bucketcount] . "\n";
+                               $hv += $mcc->_hashfunc( $i . $args[0] );
+                       }
+                       break;
+
                case 'set':
                        $key = array_shift( $args );
                        if ( $args[0] == "#" && is_numeric( $args[1] ) ) {
@@ -70,6 +139,16 @@ do {
                        }
                        break;
 
+               case 'history':
+                       if ( function_exists( 'readline_list_history' ) ) {
+                               foreach( readline_list_history() as $num => $line) {
+                                       print "$num: $line\n";
+                               }
+                       } else {
+                               print "readline_list_history() not available\n";
+                       }
+                       break;
+
                case 'dumpmcc':
                        var_dump( $mcc );
                        break;
@@ -81,7 +160,8 @@ do {
 
                default:
                        $bad = true;
-       }
+       } // switch() end
+
        if ( $bad ) {
                if ( $command ) {
                        print "Bad command\n";