→ コマンドラインから、php -f chk_memcached.php get_list みたいに実行
・get_list 表示例
# php -f chk_memcached.php get_list ============================== command:get_list ============================== * = old cache --------------- expire = 0 | size = 10 | cache_key = foo expire = 0 | size = 20 | cache_key = hoge --------------- key count:2 total cache size: 30byte *old total cache size: 0byte
#define('MEM_HOST', 'localhost'); define('MEM_HOST', '127.0.0.1'); define('MEM_PORT', 11211); if ($argc < 2) { showUsage(); exit; } $output = array(); $keys = array(); $value = ''; //Memcache $memcache_obj = new Memcache; $memcache_obj->connect(MEM_HOST, MEM_PORT); array_shift($argv); $command = array_shift($argv); switch ($command) { case 'get': $keys = $argv; $re = $memcache_obj->get($keys); break; case 'get_list': $re = getKeyList($memcache_obj); break; case 'set': $keys = array_shift($argv); $value = array_shift($argv); $re = $memcache_obj->set($keys, $value); break; case 'delete': $keys = array_shift($argv); $re = $memcache_obj->delete($keys); break; default: showUsage(); break; } $output[] = '=============================='; $output[] = 'command:' . $command; if (is_array($keys)) $keys = join(',', $keys); if ($keys) $output[] = 'key(s):' . $keys; if ($value) $output[] = 'value:' . $value; $output[] = '=============================='; $output[] = ''; echo join("\n", $output); if (is_array($re)) var_dump($re); else echo $re; echo "\n"; function showUsage() { $usage = basename(__FILE__) . " -- Usage >>>>\n"; $usage.= " :get_list\n"; $usage.= " :get [key1] [key2] [key3] ... [keyN]\n"; $usage.= " :set [key] [value]\n"; $usage.= " :delete [key]\n"; echo $usage; } /** * 統計情報からすべてのキーを抜き出す */ function getKeyList($memcache_obj) { $result = array(); $tmp_keys = array(); $all_keys = array(); $total = 0; $old_total = 0; $slabs = $memcache_obj->getExtendedStats('slabs'); $stats = $memcache_obj->getStats(); $memcached_started_time = $stats['time'] - $stats['uptime']; $stats_item = $memcache_obj->getStats('items'); $items = $stats_item['items']; foreach ($items as $slabclass => $item) { $stats_cachedump = $memcache_obj->getStats('cachedump', $slabclass, $item['number']); $tmp_keys = array_merge($tmp_keys, $stats_cachedump); } ksort($tmp_keys); foreach ($tmp_keys as $cache_key => $v) { $size = (int)$v[0]; $time = ($v[1] == $memcached_started_time)? 0: $v[1]; $expire = (!$time)? $time: date('Y/m/d H:i:s', $time); $old_flg = ($time && $time < time())? '*': ' '; $total+=$size; if ($old_flg == '*') $old_total+=$size; $all_keys[] = 'expire = ' . $expire . $old_flg . ' | size = ' . sprintf("%8s", $size) . ' | cache_key = ' . $cache_key; } $result[] = '* = old cache'; $result[] = '--------------- '; $result[] = join("\n", $all_keys); $result[] = '--------------- '; $result[] = 'key count:' . count($all_keys); $result[] = ' total cache size:' . sprintf("%10s", $total) . 'byte'; $result[] = '*old total cache size:' . sprintf("%10s", $old_total) . 'byte'; return join("\n", $result); }