BLOGTIMES
2007/08/08

memcachedの内容を確認するには

  memcached  php 
このエントリーをはてなブックマークに追加

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が必要です→https://blog.cles.jp/item/2141
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

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

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

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