Skip to content

Instantly share code, notes, and snippets.

@0xRoch
Created June 19, 2012 10:22
Show Gist options
  • Save 0xRoch/2953409 to your computer and use it in GitHub Desktop.
Save 0xRoch/2953409 to your computer and use it in GitHub Desktop.
<?php
function sendMemcacheCommand($command){
$server = "localhost";
$port = 11211;
$s = @fsockopen($server,$port);
if (!$s){
die("Cant connect to:".$server.':'.$port);
}
fwrite($s, $command."\r\n");
$buf='';
while ((!feof($s))) {
$buf .= fgets($s, 256);
if (strpos($buf,"END\r\n")!==false) {
break;
}
if (strpos($buf,"DELETED\r\n")!==false || strpos($buf,"NOT_FOUND\r\n")!==false) {
break;
}
if (strpos($buf,"OK\r\n")!==false) {
break;
}
}
fclose($s);
return ($buf);
}
function listKeys() {
$res = array();
$string = sendMemcacheCommand("stats items");
$lines = explode("\r\n", $string);
$slabs = array();
foreach($lines as $line) {
if (preg_match("/STAT items:([\d]):/", $line, $matches) == 1) {
if (isset($matches[1])) {
if (!in_array($matches[1], $slabs)) {
$slabs[] = $matches[1];
$string = sendMemcacheCommand("stats cachedump " . $matches[1] . " 100");
preg_match_all("/ITEM (.*?) /", $string, $matches);
$res = array_merge($res, $matches[1]);
}
}
}
}
return $res;
}
var_dump(listKeys());
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment