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

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

代码如下,代码为memcache官方代码,引用在此,做一下简单的说明:

1、设置用户名和密码

define('ADMIN_USERNAME','admin'); // Admin Username
define('ADMIN_PASSWORD','123456');  // Admin Password

2、配置服务器及其端口,可以配置多台

$MEMCACHE_SERVERS[] = 'localhost:11211'; // add more as an array
$MEMCACHE_SERVERS[] = 'localhost:11212'; // add more as an array

<?php
/*
  +----------------------------------------------------------------------+
  | PHP Version 5                                                        |
  +----------------------------------------------------------------------+
  | Copyright (c) 1997-2004 The PHP Group                                |
  +----------------------------------------------------------------------+
  | This source file is subject to version 3.0 of the PHP license,      |
  | that is bundled with this package in the file LICENSE, and is        |
  | available through the world-wide-web at the following url:          |
  | .                                  |
  | If you did not receive a copy of the PHP license and are unable to  |
  | obtain it through the world-wide-web, please send a note to          |
  | license@php.net so we can mail you a copy immediately.              |
  +----------------------------------------------------------------------+
  | Author:  Harun Yayli <harunyayli at gmail.com>                      |
  +----------------------------------------------------------------------+
*/

$VERSION='$Id: memcache.php,v 1.1.2.3 2008/08/28 18:07:54 mikl Exp $';

define('ADMIN_USERNAME','admin');  // Admin Username
define('ADMIN_PASSWORD','123456');   // Admin Password
define('DATE_FORMAT','Y/m/d H:i:s');
define('GRAPH_SIZE',200);
define('MAX_ITEM_DUMP',50);

$MEMCACHE_SERVERS[] = 'localhost:11211'; // add more as an array


////////// END OF DEFAULT CONFIG AREA /////////////////////////////////////////////////////////////

///////////////// Password protect ////////////////////////////////////////////////////////////////
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
          $_SERVER['PHP_AUTH_USER'] != ADMIN_USERNAME ||$_SERVER['PHP_AUTH_PW'] != ADMIN_PASSWORD) {
   Header("WWW-Authenticate: Basic realm=https://www.linuxidc.com/Linux/2014-11/\"Memcache Login\"");
   Header("HTTP/1.0 401 Unauthorized");

echo <<<EOB
    <html><body>
    <h1>Rejected!</h1>
    <big>Wrong Username or Password!</big>
    </body></html>
EOB;
   exit;
}

///////////MEMCACHE FUNCTIONS /////////////////////////////////////////////////////////////////////

function sendMemcacheCommands($command){
    global $MEMCACHE_SERVERS;
 $result = array();

foreach($MEMCACHE_SERVERS as $server){
  $strs = explode(':',$server);
  $host = $strs[0];
  $port = $strs[1];
  $result[$server] = sendMemcacheCommand($host,$port,$command);
 }
 return $result;
}
function sendMemcacheCommand($server,$port,$command){

$s = @fsockopen($server,$port);
 if (!$s){
  die("Cant connect to:".$server.':'.$port);
 }

fwrite($s, $command."\r\n");

$buf='';
 while ((!feof($s))) {
  $buf .= fgets($s, 256);
  if (strpos($buf,"END\r\n")!==false){ // stat says end
      break;
  }
  if (strpos($buf,"DELETED\r\n")!==false || strpos($buf,"NOT_FOUND\r\n")!==false){ // delete says these
      break;
  }
  if (strpos($buf,"OK\r\n")!==false){ // flush_all says ok
      break;
  }
 }
    fclose($s);
    return parseMemcacheResults($buf);
}
function parseMemcacheResults($str){
   
 $res = array();
 $lines = explode("\r\n",$str);
 $cnt = count($lines);
 for($i=0; $i< $cnt; $i++){
    $line = $lines[$i];
  $l = explode(' ',$line,3);
  if (count($l)==3){
   $res[$l[0]][$l[1]]=$l[2];
   if ($l[0]=='VALUE'){ // next line is the value
      $res[$l[0]][$l[1]] = array();
      list ($flag,$size)=explode(' ',$l[2]);
      $res[$l[0]][$l[1]]['stat']=array('flag'=>$flag,'size'=>$size);
      $res[$l[0]][$l[1]]['value']=$lines[++$i];
   }
  }elseif($line=='DELETED' || $line=='NOT_FOUND' || $line=='OK'){
      return $line;
  }
 }
 return $res;

}

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

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