BLOGTIMES
::
Home > memcachedの内容を確認するには
2007/08/08
[ by hsur at 20:20]

memcachedの内容を確認するには

  

memcachedは便利なんですが、専用のクライアントがないのでどんな項目がどれくらいキャッシュされているかどうかを簡単に知る方法はないようです。ということで、memcachedでどんな内容がキャッシュされているか確認するためのスクリプトを作ってみました。

ソースコード

memcached_status.php

<?php

$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");

echo '<html>
<head>
 <title>memcached - cached items</title>
</head>
<body>
<h2>Item Detail</h2>
<form action="" method="get">
  <input type="text" name="cacheKey" value="'
.$_GET['cacheKey'].'"/>
  <input type="submit" value="submit" />
</form>'
;

if( $_GET['cacheKey'] ){
        $key = $_GET['cacheKey'];
        echo "<h3>Key: $key</h3>
        <pre>"
;
        echo var_dump($memcache->get($key));
        echo "</pre>";
}

echo '<h2>Cached Items</h2>
<form action="" method="get">
  <input type="hidden" name="flush" value="1"/>
  <input type="submit" value="flush!" />
</form>
<pre>'
;

if( $_GET['flush']){
        $items = $memcache->getStats('items');
        foreach( $items['items'] as $key => $item ){
                $number = $item['number'];
                $dump = $memcache->getStats('cachedump', $key, $number*2);
                foreach( $dump as $ckey => $carr ){
                        $memcache->delete($ckey);
                }
        }
}

$items = $memcache->getStats('items');

$count = 0;
$ktotal = 0;
$vtotal = 0;

foreach( $items['items'] as $key => $item ){
        $number = $item['number'];
        $dump = $memcache->getStats('cachedump', $key, $number*2);
        foreach( $dump as $ckey => $carr ){
                echo $key,':', $ckey, ': [', $carr[0], 'b; ', $carr[1], 's]', "\n";
                $count++;
                $vtotal += $carr[0];
                $ktotal += strlen($ckey);
        }
}

$total = $vtotal + $ktotal;
echo "--\nkey total:$ktotal b\nvalue total:$vtotal b\ntotal: $total b\ncount:$count\n";
echo '</pre>
</body>
</html>'
;

※2008/05/28追記: コードを少しアップデートしました。

出力結果

こんな感じで出力できます。これでちょっと便利になりました。

1:metatags_3053_2141: [12b; 1186572171s]
1:trackback_2968_828: [7b; 1186572170s]
1:metatags_3053_828: [12b; 1186572169s]
1:googlemaps_2526_2: [0b; 1186572166s]
1:trackback_2971_2: [3b; 1186572165s]
1:metatags_3053_641: [12b; 1186572165s]
1:spambayes_3046_0: [12b; 1186572162s]
1:trackback_2968_1912: [7b; 1186572162s]
1:metatags_3053_1912: [12b; 1186572162s]
1:trackback_2961_0: [10b; 1186572156s]
(中略)
18:SKIN_20_archive: [3275b; 1186572199s]
18:SKIN_20_error: [2931b; 1186572177s]
18:SKIN_31_index: [3468b; 1186571842s]
18:SKIN_20_member: [3175b; 1186569842s]
18:SKIN_20_archivelist: [3519b; 1186569616s]
18:SKIN_20_search: [2932b; 1186505101s]
19:TMPL_mdetailed: [4284b; 1186572201s]
19:SKIN_20_index: [3773b; 1186572152s]
19:TMPL_bluerain/full: [4046b; 1186571919s]
20:SKIN_20_item: [5352b; 1186572186s]
20:SKIN_31_item: [5057b; 1186572118s]
--
key total:210675 b
value total:495633 b
total: 706308 b
count:11750
このエントリは役に立ちましたか?
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→http://blog.cles.jp/item/2141
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン

★下記に2つの英単語をスペースで区切って入力してください
::
Home > memcachedの内容を確認するには