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;
 }