public function test() { $arr = array(array('megabyte', 'byte', 0.5, 524288), array('megabit', 'megabyte', 100, 12.5), array('GB', 'MiB', 1, 1024), array('zb', 'tb', 1, 1073741824), array('zettabyte', 'exabyte', 1, 1024), array('zettabit', 'exabit', 1, 1024)); foreach ($arr as $test) { $res = ConvertDatasize::convert($test[0], $test[1], $test[2]); $this->assertEquals($res, $test[3]); } }
/** * 1024M, 4G, 256K etc into bytes */ public static function toBytes($s) { if (is_numeric($s)) { throw new \Exception('unexpected value: ' . $s); } //HACK: find first non-digit/non-separator. replace with a regexp for ($i = 0; $i < strlen($s); $i++) { $c = substr($s, $i, 1); if (!is_numeric($c) && $c != '.' && $c != ',') { break; } } $suff = substr($s, $i); $val = substr($s, 0, $i); return ConvertDatasize::convert($suff, 'byte', $val); }
echo 'Used memory: <b>' . round(ConvertDatasize::convert('byte', 'MiB', $used_mem), 1) . ' MiB</b>'; $memory_limit = ini_get('memory_limit'); if ($memory_limit != '-1') { // "-1" means "no memory limit" $limit = ConvertDatasize::ToBytes($memory_limit); $pct = round($used_mem / $limit * 100, 1); $limit_s = round(ConvertDatasize::convert('byte', 'MiB', $limit), 1); echo ' (<b>' . $pct . '%</b>' . ' of <b>' . $limit_s . ' MiB</b>)<br/>'; } else { echo ' (no limit)<br/>'; } echo '<br/>'; if (extension_loaded('apc')) { $info = apc_cache_info('', true); //d($info); echo 'APC: using <b>' . round(ConvertDatasize::convert('byte', 'MiB', $info['mem_size']), 2) . ' MiB</b><br/>'; echo 'APC: <b>' . $info['num_hits'] . '</b> hits, <b>' . $info['num_misses'] . '</b> misses<br/>'; echo 'APC: <b>' . $info['num_entries'] . '</b> entries (max <b>' . $info['num_slots'] . '</b>)<br/>'; echo '<br/>'; } $client = HttpUserAgent::getBrowser(); echo 'Client: <b>' . $_SERVER['REMOTE_ADDR'] . '</b>' . ' using ' . ' <span title="' . $_SERVER['HTTP_USER_AGENT'] . '" style="font-weight:bold">' . $client->name . ' ' . $client->version . ' (' . $client->os . ', ' . $client->arch . ')</span><br/>'; echo '<br/>'; echo 'Webserver: <b>' . $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'] . '</b><br/>'; echo 'Software: <b>' . $_SERVER['SERVER_SOFTWARE'] . '</b> with <b><span title="PHP_VERSION_ID = ' . PHP_VERSION_ID . '">PHP ' . phpversion() . '</span></b><br/>'; echo 'Webserver time: <b>' . date('Y-m-d H:i:s T') . '</b><br/>'; echo 'System uptime: <b>' . elapsed_seconds(uptime()) . '</b><br/>'; echo '</div>'; // closing $prof_id echo ' | <span id="span_rendertime">9.99</span>s render'; echo ahref_js('', "return hide_el('" . $wrapper_id . "');", 'closebtn');
/** * Debug function. Returns memory usage */ function dm() { $used_mem = memory_get_peak_usage(false); $res = 'Memory: using ' . round(ConvertDatasize::convert('byte', 'MiB', $used_mem), 1) . ' MiB'; $memory_limit = ini_get('memory_limit'); if ($memory_limit != '-1') { // "-1" means "no memory limit" $limit = datasize_to_bytes($memory_limit); $pct = round($used_mem / $limit * 100, 1); $limit_s = round(ConvertDatasize::convert('byte', 'MiB', $limit), 1); $res .= ' (' . $pct . '% of ' . $limit_s . ' MiB)' . ln(); } else { $res .= ' (no limit)' . ln(); } if (extension_loaded('apc')) { $info = apc_cache_info('', true); $res .= 'APC: using ' . round(ConvertDatasize::convert('byte', 'MiB', $info['mem_size']), 2) . ' MiB' . ', ' . $info['num_hits'] . ' hits, ' . $info['num_misses'] . ' misses, ' . $info['num_entries'] . ' entries (max ' . $info['num_slots'] . ')' . ln(); } return $res; }