- blogs:
- cles::blog
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>';
$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 を使ってログインすることができます。
Copyright © 2004-2010 by CLES All Rights Reserved.
sp-20100903181955644595539@cles.net
sp-20100903181955644595539@cles.net
サイト内検索
- やっぱりあった!パクれる読... (9)
- 「近いうちに食事」は社交辞令 (5)
- 忘れることができなかったら... (5)
- 年賀状を作っていません (4)
- 新年度のはずなのに (4)
1 . やっぱりあった!パクれる読書感想文! (92045)
2 . お盆休み (39667)
3 . Echofon for Firefox (13779)
4 . ドラゴンクエストVIの影響力 (13733)
5 . 半熟味付け卵 (13358)
2 . お盆休み (39667)
3 . Echofon for Firefox (13779)
4 . ドラゴンクエストVIの影響力 (13733)
5 . 半熟味付け卵 (13358)
cles::blogについて
Syndicate
Referrers