public function w3tc_usage_statistics_summary_from_history($summary, $history) { // memcached servers if ($this->_config->get_string('pgcache.engine') == 'memcached') { $summary['memcached_servers']['pgcache'] = array('servers' => $this->_config->get_array('pgcache.memcached.servers'), 'username' => $this->_config->get_boolean('pgcache.memcached.username'), 'password' => $this->_config->get_boolean('pgcache.memcached.password'), 'name' => __('Page Cache', 'w3-total-cache')); } elseif ($this->_config->get_string('pgcache.engine') == 'redis') { $summary['redis_servers']['pgcache'] = array('servers' => $this->_config->get_array('pgcache.redis.servers'), 'username' => $this->_config->get_boolean('pgcache.redis.username'), 'dbid' => $this->_config->get_boolean('pgcache.redis.dbid'), 'password' => $this->_config->get_boolean('pgcache.redis.password'), 'name' => __('Page Cache', 'w3-total-cache')); } // total size $g = Dispatcher::component('PgCache_ContentGrabber'); $pagecache = array(); $e = $this->_config->get_string('pgcache.engine'); $pagecache['size_visible'] = $e == 'file_generic'; $pagecache['requests_visible'] = $e != 'file_generic'; if (isset($summary['period']['timestamp_end'])) { // need to return cache size if ($pagecache['size_visible']) { list($v, $should_count) = Util_UsageStatistics::get_or_init_size_transient('w3tc_ustats_pagecache_size', $summary); if ($should_count) { $size = $g->get_cache_stats_size($summary['timeout_time']); $v['size_used'] = Util_UsageStatistics::bytes_to_size2($size, 'bytes'); $v['items'] = Util_UsageStatistics::integer2($size, 'items'); set_transient('w3tc_ustats_pagecache_size', $v, 120); } if (isset($v['size_used'])) { $pagecache['size_used'] = $v['size_used']; $pagecache['items'] = $v['items']; } } // counters $requests_total = Util_UsageStatistics::sum($history, 'pagecache_requests_total'); $requests_time_ms = Util_UsageStatistics::sum($history, 'pagecache_requests_time_10ms') * 10; $requests_hits = Util_UsageStatistics::sum($history, 'pagecache_requests_hits'); $pagecache['requests_total'] = Util_UsageStatistics::integer($requests_total); $pagecache['request_time_ms'] = Util_UsageStatistics::value_per_period_seconds($requests_time_ms, $summary); $pagecache['requests_per_second'] = Util_UsageStatistics::value_per_period_seconds($requests_total, $summary); $pagecache['hit_rate'] = Util_UsageStatistics::percent($requests_hits, $requests_total); } $summary['pagecache'] = $pagecache; return $summary; }
private function get_redis_summary($server_descriptors, $promise_only = false) { $servers = array(); foreach ($server_descriptors as $i) { foreach ($i['servers'] as $host_port) { if (!isset($servers[$host_port])) { $servers[$host_port] = array('password' => $i['password'], 'dbid' => $i['dbid'], 'module_names' => array($i['name'])); } else { $servers[$host_port]['module_names'][] = $i['name']; } } } $summary = array(); foreach ($servers as $host_port => $i) { $cache = Cache::instance('redis', array('servers' => array($host_port), 'password' => $i['password'], 'dbid' => $i['dbid'])); if ($promise_only) { $stats = array(); } else { $stats = $cache->get_statistics(); } if (isset($stats['keyspace_hits']) && $stats['keyspace_misses']) { $stats['_keyspace_total'] = (int) $stats['keyspace_hits'] + (int) $stats['keyspace_misses']; } $id = md5($host_port); $summary[$id] = array('name' => $host_port, 'module_names' => $i['module_names'], 'size_used' => Util_UsageStatistics::bytes_to_size2($stats, 'used_memory'), 'hit_rate' => Util_UsageStatistics::percent2($stats, 'keyspace_hits', '_keyspace_total'), 'expirations_per_second' => Util_UsageStatistics::value_per_second($stats, 'expired_keys', 'uptime_in_seconds'), 'evictions_per_second' => Util_UsageStatistics::value_per_second($stats, 'evicted_keys', 'uptime_in_seconds')); } return $summary; }