Current Path : /home/theafprt/hypekndy.com/wp-content/plugins/w3-total-cache/ |
Current File : /home/theafprt/hypekndy.com/wp-content/plugins/w3-total-cache/UsageStatistics_Sources_Apc.php |
<?php /** * File: UsageStatistics_Sources_Apc.php * * @package W3TC */ namespace W3TC; /** * Class UsageStatistics_Sources_Apc */ class UsageStatistics_Sources_Apc { /** * An array that stores the names of modules. * * @var array */ private $module_names = array(); /** * Constructor for initializing the module names from the given server descriptors. * * This method iterates over the provided `$server_descriptors` array and extracts the 'name' * of each module to populate the `$module_names` array. The names are stored to keep track of * which modules are associated with the current object instance. * * @param array $server_descriptors An array of server descriptors, where each descriptor is * an associative array containing module details. */ public function __construct( $server_descriptors ) { foreach ( $server_descriptors as $module_key => $i ) { $this->module_names[] = $i['name']; } } /** * Retrieves a snapshot of the current APCu cache statistics. * * This method fetches the current cache information using `apcu_cache_info()` and returns * a summary of the cache's statistics such as the number of entries, memory size, number of hits, * and the total cache accesses (hits + misses). * * @return array An associative array containing the total 'items', 'size_used', 'get_hits', and 'get_total'. */ public function get_snapshot() { $cache = apcu_cache_info(); return array( 'items' => $cache['num_entries'], 'size_used' => $cache['mem_size'], 'get_hits' => $cache['num_hits'], 'get_total' => ( $cache['num_hits'] + $cache['num_misses'] ), ); } /** * Retrieves a summary of the APCu cache and memory statistics. * * This method provides a detailed summary of the cache usage, including: * - The modules using the cache. * - The number of cache entries. * - The total memory used and the percentage of memory used. * - Cache hit and miss statistics. * - The uptime of the cache in seconds. * - The number of cache evictions. * - Requests per second based on the cache runtime. * * The method also calculates hit rate percentage and converts memory usage into a more readable format. * * @return array An associative array containing 'used_by', 'items', 'size_used', 'get_hits', 'get_total', * 'runtime_secs', 'evictions', 'size_percent', 'requests_per_second', and 'get_hit_rate' */ public function get_summary() { $cache = apcu_cache_info(); $time = time(); $runtime = $time - $cache['start_time']; $mem = apcu_sma_info(); $mem_size = $mem['num_seg'] * $mem['seg_size']; $mem_avail = $mem['avail_mem']; $mem_used = $mem_size - $mem_avail; $sum = array( 'used_by' => implode( ',', $this->module_names ), 'items' => $cache['num_entries'], 'size_used' => Util_UsageStatistics::bytes_to_size( $cache['mem_size'] ), 'get_hits' => $cache['num_hits'], 'get_total' => ( $cache['num_hits'] + $cache['num_misses'] ), 'runtime_secs' => $runtime, 'evictions' => $cache['expunges'], 'size_percent' => Util_UsageStatistics::percent( $mem_used, $mem_avail ), ); if ( 0 !== $sum['runtime_secs'] ) { $sum['requests_per_second'] = sprintf( '%.2f', $sum['get_total'] / $sum['runtime_secs'] ); } $sum['get_hit_rate'] = Util_UsageStatistics::percent2( $sum, 'get_hits', 'get_total' ); return $sum; } }