php实现监控varnish缓存服务器的状态
《PHP实例:php实现监控varnish缓存服务器的状态》要点: PHP编程当varnish和网站部署在同一台服务器上的时候,我们不可能随时登录上服务器去查看varnish的命中率,没想到有大神早就写了出来,本日就分享给大家,使用网页查看varnish命中率. PHP编程系统:centos 5.x PHP编程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编程效果如下: PHP编程 PHP编程ps:为了查看实时情况,可以在这监控页加个html定时刷新. 《PHP实例:php实现监控varnish缓存服务器的状态》是否对您有启发,欢迎查看更多与《PHP实例:php实现监控varnish缓存服务器的状态》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |