PHP监测Memcache服务端的运行状况(2)

function dumpCacheSlab($server,$slabId,$limit){
    list($host,$port) = explode(':',$server);
    $resp = sendMemcacheCommand($host,$port,'stats cachedump '.$slabId.' '.$limit);

return $resp;

}

function flushServer($server){
    list($host,$port) = explode(':',$server);
    $resp = sendMemcacheCommand($host,$port,'flush_all');
    return $resp;
}
function getCacheItems(){
 $items = sendMemcacheCommands('stats items');
 $serverItems = array();
 $totalItems = array();
 foreach ($items as $server=>$itemlist){
    $serverItems[$server] = array();
    $totalItems[$server]=0;
    if (!isset($itemlist['STAT'])){
        continue;
    }

$iteminfo = $itemlist['STAT'];

foreach($iteminfo as $keyinfo=>$value){
        if (preg_match('/items\:(\d+?)\:(.+?)$/',$keyinfo,$matches)){
            $serverItems[$server][$matches[1]][$matches[2]] = $value;
            if ($matches[2]=='number'){
                $totalItems[$server] +=$value;
            }
        }
    }
 }
 return array('items'=>$serverItems,'counts'=>$totalItems);
}
function getMemcacheStats($total=true){
 $resp = sendMemcacheCommands('stats');
 if ($total){
  $res = array();
  foreach($resp as $server=>$r){
   foreach($r['STAT'] as $key=>$row){
    if (!isset($res[$key])){
     $res[$key]=null;
    }
    switch ($key){
     case 'pid':
      $res['pid'][$server]=$row;
      break;
     case 'uptime':
      $res['uptime'][$server]=$row;
      break;
     case 'time':
      $res['time'][$server]=$row;
      break;
     case 'version':
      $res['version'][$server]=$row;
      break;
     case 'pointer_size':
      $res['pointer_size'][$server]=$row;
      break;
     case 'rusage_user':
      $res['rusage_user'][$server]=$row;
      break;
     case 'rusage_system':
      $res['rusage_system'][$server]=$row;
      break;
     case 'curr_items':
      $res['curr_items']+=$row;
      break;
     case 'total_items':
      $res['total_items']+=$row;
      break;
     case 'bytes':
      $res['bytes']+=$row;
      break;
     case 'curr_connections':
      $res['curr_connections']+=$row;
      break;
     case 'total_connections':
      $res['total_connections']+=$row;
      break;
     case 'connection_structures':
      $res['connection_structures']+=$row;
      break;
     case 'cmd_get':
      $res['cmd_get']+=$row;
      break;
     case 'cmd_set':
      $res['cmd_set']+=$row;
      break;
     case 'get_hits':
      $res['get_hits']+=$row;
      break;
     case 'get_misses':
      $res['get_misses']+=$row;
      break;
     case 'evictions':
      $res['evictions']+=$row;
      break;
     case 'bytes_read':
      $res['bytes_read']+=$row;
      break;
     case 'bytes_written':
      $res['bytes_written']+=$row;
      break;
     case 'limit_maxbytes':
      $res['limit_maxbytes']+=$row;
      break;
     case 'threads':
      $res['rusage_system'][$server]=$row;
      break;
    }
   }
  }
  return $res;
 }
 return $resp;
}

//////////////////////////////////////////////////////

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8864f323703fffce391c0cd784e04a30.html