>  기사  >  백엔드 개발  >  PHP는 varnish 캐시 server_php 기술의 상태 모니터링을 구현합니다.

PHP는 varnish 캐시 server_php 기술의 상태 모니터링을 구현합니다.

WBOY
WBOY원래의
2016-05-16 20:26:48945검색

바니쉬와 웹사이트가 동일한 서버에 배포되면, 바니쉬의 적중률을 확인하기 위해 언제든지 서버에 로그인하는 것이 불가능합니다. 의외로 오래 전에 마스터가 작성해 놓았습니다. 공유하시고, 웹페이지를 이용하여 바니쉬 적중률을 확인해보세요.

시스템: centos 5.x
소프트웨어: varnish-3.0.x

ps: 3.0 이하 버전은 소켓을 통해 Varnish 관리 포트에 연결하여 stat 명령을 통해 볼 수 있으며 3.0 이상 버전에서는 stat 명령이 없으며 다음 방법으로만 해결할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

$outfile=shell_exec("/usr/bin/varnishstat -x");
$xml=simplexml_load_string($outfile);
echo $xml->getName() "
";
foreach($xml->children()을 $child로)
{
//$tmpName="";
foreach($child->children() as $subChild)
          {
            if ($subChild->getName() == "name" )
             {
                 $tmpName=$subChild;
}
else if ($subChild->getName() == "value" )
           {
                 if ($tmpName!="")
                {
                   $arys["$tmpName"]=$subChild;
                    $tmpName="";
            }
}
        그 외
             {
                 계속;
}
}
}
함수 byteReduce($bytes)
{
만약 ($바이트>1099511627776)
          {
            반환 라운드($bytes/1099511627776)."TB";
}
        else if ($bytes > 1073741824)
          {
            반환 라운드($bytes/1073741824)."GB";
}
        else if ($bytes>1048576)
          {
             반환 라운드($bytes/1048576)."MB";
}
        else if ($bytes>1024)
          {
             반환 라운드($bytes/1024)."KB";
}
       그 외
          {
              $바이트를 반환합니다."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 "캐시 적중률: ".round(($arys["cache_hit"]/$arys["client_req"])*100)." %
";
echo "LRU 핵이 있는 개체: ".$arys[n_lru_nuked]."
";
echo " ".byteReduce($arys["s_bodybytes"] $arys["s_hdrbytes"])." Acc 콘텐츠(".byteReduce($arys["s_hdrbytes"])." 헤더 ".byteReduce($arys["s_bodybytes) "])." 본문)";
?>

효과는 다음과 같습니다.

ps: 실시간 상황을 확인하시려면 본 모니터링 페이지에 html을 추가하여 주기적으로 새로고침하시면 됩니다.
좋아요, 이렇게 하면 언제든지 바니시 상태를 더 쉽게 확인할 수 있습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.