php实现监控varnish缓存服务器的状态

2015-01-24信息快讯网

这篇文章主要介绍了php实现监控varnish缓存服务器的状态,Varnish是一款高性能的开源HTTP加速器,可以替代Squid、Nginx等服务器,需要的朋友可以参考下

当varnish和网站部署在同一台服务器上的时候,我们不可能随时登录上服务器去查看varnish的命中率,没想到有大神早就写了出来,今天就分享给大家,使用网页查看varnish命中率。

系统:centos 5.x
软件:varnish-3.0.x

ps:3.0以下的版本可以通过Socket连接到Varnish管理端口,通过stat命令查看,3.0以上没有stat命令,只能通过下面的方法解决。

<?php
$outfile=shell_exec("/usr/bin/varnishstat -x");
$xml=simplexml_load_string($outfile);
echo $xml->getName() . "<br />";
foreach($xml->children() as $child)
  {
      //$tmpName="";
      foreach($child->children() as $subChild)
      {
        if ($subChild->getName() =="name" )
         {
            $tmpName=$subChild;
        }
        else  if ($subChild->getName() =="value" )
        {
            if ($tmpName!="")
            {
               $arys["$tmpName"]=$subChild;
               $tmpName="";
            }
        }
        else
         {
            continue;
        }
      }
  }
  function byteReduce($bytes)
  {
      if ($bytes>1099511627776)
      {
          return round($bytes/1099511627776)."TB";
      }
      else if ($bytes > 1073741824)
      {
          return round($bytes/1073741824)."GB";
      }
      else if ($bytes>1048576)
      {
          return round($bytes/1048576)."MB";
      }
      else if ($bytes>1024)
      {
          return round($bytes/1024)."KB";
      }
      else
      {
          return $bytes."B";
      }
  }
  echo "client_conn: ".$arys["client_conn"] . "<br />";
  echo "client_req: ".$arys["client_req"] . "<br />";
  echo "cache_hit: ".$arys["cache_hit"] . "<br />";
  echo "cache_miss: ".$arys["cache_miss"] . "<br />";
  echo "Cache hit rate: ".round(($arys["cache_hit"]/$arys["client_req"])*100)." % <br/>";
  echo "LRU nuked objects: ".$arys[n_lru_nuked]."<br/>";
  echo " ".byteReduce($arys["s_bodybytes"]+$arys["s_hdrbytes"])." Acc Content (".byteReduce($arys["s_hdrbytes"])." header ".byteReduce($arys["s_bodybytes"])." Body)";
?>

效果如下:

php实现监控varnish缓存服务器的状态_信息快讯网

ps:为了查看实时情况,可以在这监控页加个html定时刷新.
好了,这样就方便我们随时查看varnish的状态了.

将FCKeditor导入PHP+SMARTY的实现方法
php实现redis数据库指定库号迁移的方法
给ECShop添加最新评论
Zend Guard使用指南及问题处理
PHP和Shell实现检查SAMBA与NFS Server是否存在
php读取flash文件高宽帧数背景颜色的方法
PHP中$this和$that指针使用实例
php+ajax实现文章自动保存的方法
php在线解压ZIP文件的方法
discuz目录文件资料汇总
解决phpcms更换javascript的幻灯片代码调用图片问题
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
完整删除ecshop中获取店铺信息的API
php实现refresh刷新页面批量导入数据的方法
php进行支付宝开发中return_url和notify_url的区别分析
腾讯微博提示missing parameter errorcode 102 错误的解决方法
php将textarea数据提交到mysql出现很多空格的解决方法
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
phpmyadmin提示The mbstring extension is missing的解决方法
php提示Warning:mysql_fetch_array() expects的解决方法
PHP使用array_multisort对多个数组或多维数组进行排序
php生成shtml类用法实例
PHP中__FILE__、dirname与basename用法实例分析
PHP实现将HTML5中Canvas图像保存到服务器的方法
简单谈谈php中ob_flush和flush的区别
php常用hash加密函数
ThinkPHP控制器里javascript代码不能执行的解决方法
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
©2014-2024 dbsqp.com