Changeset 623 in svn for branches/1.3/admin/xcache.php


Ignore:
Timestamp:
2009-07-05T10:41:16+02:00 (6 years ago)
Author:
Xuefer
Message:

merged r514-r539 from trunk

Location:
branches/1.3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/1.3

  • branches/1.3/admin/xcache.php

    r604 r623  
    7373
    7474    return '0 s';
     75}
     76
     77function freeblock_to_graph($freeblocks, $size)
     78{
     79    global $graph_width, $usage_graph_width, $free_graph_width;
     80
     81    // cached in static variable
     82    static $graph_initial;
     83    if (!isset($graph_initial)) {
     84        $graph_initial = array_fill(0, $graph_width, 0);
     85    }
     86    $graph = $graph_initial;
     87    foreach ($freeblocks as $b) {
     88        $begin = $b['offset'] / $size * $graph_width;
     89        $end = ($b['offset'] + $b['size']) / $size * $graph_width;
     90
     91        if ((int) $begin == (int) $end) {
     92            $v = $end - $begin;
     93            $graph[(int) $v] += $v - (int) $v;
     94        }
     95        else {
     96            $graph[(int) $begin] += 1 - ($begin - (int) $begin);
     97            $graph[(int) $end] += $end - (int) $end;
     98            for ($i = (int) $begin + 1, $e = (int) $end; $i < $e; $i ++) {
     99                $graph[$i] += 1;
     100            }
     101        }
     102    }
     103    $html = array();
     104    $c = 255;
     105    foreach ($graph as $k => $v) {
     106        if (!isset($free_graph_width)) {
     107            $v = 1 - $v;
     108        }
     109        $v = (int) ($v * $c);
     110        $r = $g = $c - $v;
     111        $b = $c;
     112        $html[] = '<div style="background: rgb(' . "$r,$g,$b" . ')"></div>';
     113    }
     114    return implode('', $html);
     115}
     116
     117function calc_total(&$total, $data)
     118{
     119    foreach ($data as $k => $v) {
     120        switch ($k) {
     121        case 'type':
     122        case 'cache_name':
     123        case 'cacheid':
     124        case 'free_blocks':
     125            continue 2;
     126        }
     127        if (!isset($total[$k])) {
     128            $total[$k] = $v;
     129        }
     130        else {
     131            switch ($k) {
     132            case 'his_by_hour':
     133            case 'his_by_second':
     134                foreach ($data[$k] as $kk => $vv) {
     135                    $total[$k][$kk] += $vv;
     136                }
     137                break;
     138
     139            default:
     140                $total[$k] += $v;
     141            }
     142        }
     143    }
     144}
     145
     146function array_avg($a)
     147{
     148    if (count($a) == 0) {
     149        return '';
     150    }
     151    return array_sum($a) / count($a);
     152}
     153
     154function bar_hits_percent($v, $percent, $active)
     155{
     156    $r = 220 + (int) ($percent * 25);
     157    $g = $b = 220 - (int) ($percent * 220);
     158    $percent = (int) ($percent * 100);
     159    $a = $active ? ' active' : '';
     160    return '<div title="' . $v . '">'
     161        . '<div class="barf' . $a . '" style="height: ' . (100 - $percent) . '%"></div>'
     162        . '<div class="barv' . $a . '" style="background: rgb(' . "$r,$g,$b" . '); height: ' . $percent . '%"></div>'
     163        . '</div>';
     164}
     165
     166function hits_to_graph($hits)
     167{
     168    $max = 0;
     169    foreach ($hits as $v) {
     170        if ($max < $v) {
     171            $max = $v;
     172        }
     173    }
     174    if (!$max) {
     175        return '';
     176    }
     177    $t = (time() / (60 * 60)) % 24;
     178    $html = array();
     179    foreach ($hits as $i => $v) {
     180        $html[] = bar_hits_percent($v, $v / $max, $i == $t);
     181    }
     182    return implode('', $html);
    75183}
    76184
     
    130238        $cacheid = (int) (isset($_POST['cacheid']) ? $_POST['cacheid'] : 0);
    131239        if (isset($_POST['clearcache'])) {
    132             xcache_clear_cache($type, $cacheid);
     240            $count = xcache_count($type);
     241            if ($cacheid == $count) {
     242                for ($cacheid = 0; $cacheid < $count; $cacheid ++) {
     243                    xcache_clear_cache($type, $cacheid);
     244                }
     245            }
     246            else {
     247                xcache_clear_cache($type, $cacheid);
     248            }
    133249        }
    134250    }
     
    138254// {{{ load info/list
    139255$cacheinfos = array();
     256$total = array();
    140257for ($i = 0; $i < $pcnt; $i ++) {
    141258    $data = xcache_info(XC_TYPE_PHP, $i);
     
    147264    $data['cacheid'] = $i;
    148265    $cacheinfos[] = $data;
    149 }
     266    if ($pcnt >= 2) {
     267        calc_total($total, $data);
     268    }
     269}
     270
     271if ($pcnt >= 2) {
     272    $total['type'] = XC_TYPE_PHP;
     273    $total['cache_name'] = _T('Total');
     274    $total['cacheid'] = $pcnt;
     275    $total['gc'] = null;
     276    $total['istotal'] = true;
     277    $cacheinfos[] = $total;
     278}
     279
     280$total = array();
    150281for ($i = 0; $i < $vcnt; $i ++) {
    151282    $data = xcache_info(XC_TYPE_VAR, $i);
     
    157288    $data['cacheid'] = $i;
    158289    $cacheinfos[] = $data;
     290    if ($pcnt >= 2) {
     291        calc_total($total, $data);
     292    }
     293}
     294
     295if ($vcnt >= 2) {
     296    $total['type'] = XC_TYPE_VAR;
     297    $total['cache_name'] = _T('Total');
     298    $total['cacheid'] = $vcnt;
     299    $total['gc'] = null;
     300    $total['istotal'] = true;
     301    $cacheinfos[] = $total;
    159302}
    160303// }}}
     
    171314    }
    172315    foreach ($cacheinfos as $i => $c) {
     316        if (!empty($c['istotal'])) {
     317            continue;
     318        }
    173319        if ($c['type'] == $type && isset($c['cache_list'])) {
    174320            foreach ($c['cache_list'] as $e) {
Note: See TracChangeset for help on using the changeset viewer.