- $outfile=shell_exec("/usr/bin/varnishstat -x");
- $xml=simplexml_load_string($outfile);
- echo $xml->getName() . "
"; - foreach($xml->children() as $child)
- {
- //$tmpName="";
- foreach($child->children() as $subChild)
- {
- if ($subChild->getName() =="name" )
- {
- $tmpName=$subChild;
- }
- elseif ($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"] . "
"; - echo "client_req: ".$arys["client_req"] . "
"; - echo "cache_hit: ".$arys["cache_hit"] . "
"; - echo "cache_miss: ".$arys["cache_miss"] . "
"; - echo "Cache hit rate: ".round(($arys["cache_hit"]/$arys["client_req"])*100)." %
"; - echo "LRU nuked objects: ".$arys[n_lru_nuked]."
"; - echo " ".byteReduce($arys["s_bodybytes"]+$arys["s_hdrbytes"])." Acc Content (".byteReduce($arys["s_hdrbytes"])." header ".byteReduce($arys["s_bodybytes"])." Body)";
- ?>
效果,如下图:
备注,为了查看实时情况,可以在在监控页加个html定时刷新,可以随时查看varnish缓存服务器状态。 |