Ignore:
Timestamp:
2009-07-05T10:41:16+02:00 (5 years ago)
Author:
moo
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.