public function execute() { global $wgMainCacheType, $wgMemCachedTimeout, $wgObjectCaches; $cache = $this->getOption('cache'); $iterations = $this->getOption('i', 100); if ($cache) { if (!isset($wgObjectCaches[$cache])) { $this->error("MediaWiki isn't configured with a cache named '{$cache}'", 1); } $servers = $wgObjectCaches[$cache]['servers']; } elseif ($this->hasArg()) { $servers = [$this->getArg()]; } elseif ($wgMainCacheType === CACHE_MEMCACHED) { global $wgMemCachedServers; $servers = $wgMemCachedServers; } elseif (isset($wgObjectCaches[$wgMainCacheType]['servers'])) { $servers = $wgObjectCaches[$wgMainCacheType]['servers']; } else { $this->error("MediaWiki isn't configured for Memcached usage", 1); } # find out the longest server string to nicely align output later on $maxSrvLen = $servers ? max(array_map('strlen', $servers)) : 0; foreach ($servers as $server) { $this->output(str_pad($server, $maxSrvLen), $server); $mcc = new MemcachedClient(['persistant' => true, 'timeout' => $wgMemCachedTimeout]); $mcc->set_servers([$server]); $set = 0; $incr = 0; $get = 0; $time_start = microtime(true); for ($i = 1; $i <= $iterations; $i++) { if ($mcc->set("test{$i}", $i)) { $set++; } } for ($i = 1; $i <= $iterations; $i++) { if (!is_null($mcc->incr("test{$i}", $i))) { $incr++; } } for ($i = 1; $i <= $iterations; $i++) { $value = $mcc->get("test{$i}"); if ($value == $i * 2) { $get++; } } $exectime = microtime(true) - $time_start; $this->output(" set: {$set} incr: {$incr} get: {$get} time: {$exectime}", $server); } }
public function set($key, $value, $exptime = 0, $flags = 0) { return $this->client->set($this->validateKeyEncoding($key), $value, $this->fixExpiry($exptime)); }
} $res = $mcc->get($args[0]); $hv = $mcc->_hashfunc($args[0]); for ($i = 0; $i < 3; $i++) { print $mcc->_buckets[$hv % $mcc->_bucketcount] . "\n"; $hv += $mcc->_hashfunc($i . $args[0]); } break; case 'set': $key = array_shift($args); if ($args[0] == "#" && is_numeric($args[1])) { $value = str_repeat('*', $args[1]); } else { $value = implode(' ', $args); } if (!$mcc->set($key, $value, 0)) { # print 'Error: ' . $mcc->error_string() . "\n"; print "MemCached error\n"; } break; case 'delete': $key = implode(' ', $args); if (!$mcc->delete($key)) { # print 'Error: ' . $mcc->error_string() . "\n"; print "MemCached error\n"; } break; case 'history': if (function_exists('readline_list_history')) { foreach (readline_list_history() as $num => $line) { print "{$num}: {$line}\n";