00001 <?php
00011 require_once( 'commandLine.inc' );
00012
00013 $mcc = new memcached( array('persistant' => true) );
00014 $mcc->set_servers( $wgMemCachedServers );
00015 #$mcc->set_debug( true );
00016
00017 function mccShowHelp($command) {
00018
00019 if(! $command ) { $command = 'fullhelp'; }
00020 $onlyone = true;
00021
00022 switch ( $command ) {
00023
00024 case 'fullhelp':
00025
00026 $onlyone = false;
00027
00028 case 'get':
00029 print "get: grabs something\n";
00030 if($onlyone) { break; }
00031
00032 case 'getsock':
00033 print "getsock: lists sockets\n";
00034 if($onlyone) { break; }
00035
00036 case 'set':
00037 print "set: changes something\n";
00038 if($onlyone) { break; }
00039
00040 case 'delete':
00041 print "delete: deletes something\n";
00042 if($onlyone) { break; }
00043
00044 case 'history':
00045 print "history: show command line history\n";
00046 if($onlyone) { break; }
00047
00048 case 'server':
00049 print "server: show current memcached server\n";
00050 if($onlyone) { break; }
00051
00052 case 'dumpmcc':
00053 print "dumpmcc: shows the whole thing\n";
00054 if($onlyone) { break; }
00055
00056 case 'exit':
00057 case 'quit':
00058 print "exit or quit: exit mcc\n";
00059 if($onlyone) { break; }
00060
00061 case 'help':
00062 print "help: help about a command\n";
00063 if($onlyone) { break; }
00064
00065 default:
00066 if($onlyone) {
00067 print "$command: command does not exist or no help for it\n";
00068 }
00069 }
00070 }
00071
00072 do {
00073 $bad = false;
00074 $showhelp = false;
00075 $quit = false;
00076
00077 $line = readconsole( '> ' );
00078 if ($line === false) exit;
00079
00080 $args = explode( ' ', $line );
00081 $command = array_shift( $args );
00082
00083
00084 switch ( $command ) {
00085 case 'help':
00086
00087 mccShowHelp(array_shift($args));
00088 break;
00089
00090 case 'get':
00091 $sub = '';
00092 if ( array_key_exists( 1, $args ) ) {
00093 $sub = $args[1];
00094 }
00095 print "Getting {$args[0]}[$sub]\n";
00096 $res = $mcc->get( $args[0] );
00097 if ( array_key_exists( 1, $args ) ) {
00098 $res = $res[$args[1]];
00099 }
00100 if ( $res === false ) {
00101 #print 'Error: ' . $mcc->error_string() . "\n";
00102 print "MemCached error\n";
00103 } elseif ( is_string( $res ) ) {
00104 print "$res\n";
00105 } else {
00106 var_dump( $res );
00107 }
00108 break;
00109
00110 case 'getsock':
00111 $res = $mcc->get( $args[0] );
00112 $sock = $mcc->get_sock( $args[0] );
00113 var_dump( $sock );
00114 break;
00115
00116 case 'server':
00117 $res = $mcc->get( $args[0] );
00118 $hv = $mcc->_hashfunc( $args[0] );
00119 for ( $i = 0; $i < 3; $i++ ) {
00120 print $mcc->_buckets[$hv % $mcc->_bucketcount] . "\n";
00121 $hv += $mcc->_hashfunc( $i . $args[0] );
00122 }
00123 break;
00124
00125 case 'set':
00126 $key = array_shift( $args );
00127 if ( $args[0] == "#" && is_numeric( $args[1] ) ) {
00128 $value = str_repeat( '*', $args[1] );
00129 } else {
00130 $value = implode( ' ', $args );
00131 }
00132 if ( !$mcc->set( $key, $value, 0 ) ) {
00133 #print 'Error: ' . $mcc->error_string() . "\n";
00134 print "MemCached error\n";
00135 }
00136 break;
00137
00138 case 'delete':
00139 $key = implode( ' ', $args );
00140 if ( !$mcc->delete( $key ) ) {
00141 #print 'Error: ' . $mcc->error_string() . "\n";
00142 print "MemCached error\n";
00143 }
00144 break;
00145
00146 case 'history':
00147 if ( function_exists( 'readline_list_history' ) ) {
00148 foreach( readline_list_history() as $num => $line) {
00149 print "$num: $line\n";
00150 }
00151 } else {
00152 print "readline_list_history() not available\n";
00153 }
00154 break;
00155
00156 case 'dumpmcc':
00157 var_dump( $mcc );
00158 break;
00159
00160 case 'quit':
00161 case 'exit':
00162 $quit = true;
00163 break;
00164
00165 default:
00166 $bad = true;
00167 }
00168
00169 if ( $bad ) {
00170 if ( $command ) {
00171 print "Bad command\n";
00172 }
00173 } else {
00174 if ( function_exists( 'readline_add_history' ) ) {
00175 readline_add_history( $line );
00176 }
00177 }
00178 } while ( !$quit );
00179
00180