[code]
<html>
<head>
<title>FreeVis 0.2.1</title>
</head>
<body bgcolor="#FFFAAA">
<b>FreeVis 0.2.1</b><br>
<i>By JoRRiZZa</i><br><br>

<?php
//laat beschikbare geheugen zien dmv procps free
//
//http://procps.sourceforge.net/
//
//niet rechtstreeks via fread van het /proc systeem
//want dat werkt schijnbaar niet altijd
//dit werkt altijd

//data extraheren uit de output, en maak hem bruikbaar
//ik overdrijf een beetje met de str_replace
//maar dat komt omdat de output van free -o
//niet altijd het zelfde is. Dus vandaar...
$free = shell_exec('free -o');
$free = str_replace('Mem:', '', $free);
$free = str_replace('Swap:', '', $free);
$free = str_replace("\r", '', $free);
$free = str_replace("\n", '', $free);
$free = str_replace(' ', '-', $free);
$free = str_replace(' ', '-', $free);
$free = str_replace(' ', '-', $free);
$free = str_replace(' ', '-', $free);
$free = str_replace(' ', '-', $free);
$free = str_replace(' -', '-', $free);
$free = str_replace('- ', '-', $free);
$free = str_replace('--', '-', $free);
$free = str_replace('--', '-', $free);
$free = str_replace('--', '-', $free);
$free = str_replace('--', '-', $free);
$free = str_replace('--', '-', $free);
$free = str_replace('--', '-', $free);
$free = str_replace('--', '-', $free);
$free = str_replace('-total-used-free-shared-buffers-cached-', '', $free);
$free_array = explode('-', $free);
$mem_tot = $free_array[0];
$mem_use = $free_array[1];
$swp_tot = $free_array[6];
$swp_use = $free_array[7];

//procenten
if ($mem_tot != 0) {
   $mem_proc = round($mem_use/$mem_tot*100);
   } else {
   $mem_proc = 0;
   }
if ($swp_tot != 0) {
   $swp_proc = round($swp_use/$swp_tot*100);
   } else {
   $swp_proc = 0;
   }

//breedte balken berekenen
$breedte = 300;
$gekleurd_mem = $breedte/100*$mem_proc;
$ongekleurd_mem = $breedte-$gekleurd_mem;
$gekleurd_swp = $breedte/100*$swp_proc;
$ongekleurd_swp = $breedte-$gekleurd_swp;

//kleur bepalen
//groen onder de 80%, rood daarboven
if ($mem_proc <= 80) {
   $mem_kleur = 'green';
   } else {
   $mem_kleur = 'red';
   }
if ($swp_proc <= 80) {
   $swp_kleur = 'green';
   } else {
   $swp_kleur = 'red';
   }

//nu het tabelletje tekenen met de kleurtjes...
?>
<table border="0" cellpadding="0" cellspacing="0">
Memory: <?php echo $mem_use.'K/'.$mem_tot.'K'; ?><br>
<tr><td width="20"></td><td width="<?php echo $gekleurd_mem; ?>" bgcolor="<?php echo $mem_kleur; ?>"></td><td width="<?php echo $ongekleurd_mem; ?>" bgcolor="grey"></td><td><?php echo $mem_proc; ?>%</td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0">
Swap: <?php echo $swp_use.'K/'.$swp_tot.'K'; ?><br>
<tr><td width="20"></td><td width="<?php echo $gekleurd_swp; ?>" bgcolor="<?php echo $swp_kleur; ?>"></td><td width="<?php echo $ongekleurd_swp; ?>" bgcolor="grey"></td><td><?php echo $swp_proc; ?>%</td></tr>
</table>
<br>
<?php
//sinds v0.2 hebben we ook het uitlezen van het gebruik van de
//mountpoints.

//commando
$filesys = shell_exec('df');
//schoonmaken
$filesys = str_replace(' ', '-', $filesys);
$filesys = str_replace('--', '-', $filesys);
$filesys = str_replace('--', '-', $filesys);
$filesys = str_replace('--', '-', $filesys);
$filesys = str_replace('--', '-', $filesys);
$filesys = str_replace("Filesystem-1K-blocks-Used-Available-Use%-Mounted-on\n", '', $filesys);
//daadwerkelijk splijten
$filesys = split("\n", $filesys);
//functie per output-regel
$i = 0;
while ($i <= count($filesys)) {
      if ($filesys[$i] != "") {
         $data = explode('-', $filesys[$i]);
         //nu hebben we de data voor 1 mountpoint in een array
         $dev = $data[0];
         $blocks_tot = $data[1];
         $blocks_use = $data[2];
         $blocks_free = $data[3];
         $blocks_proc = str_replace('%', '', $data[4]);
         $mountpoint = $data[5];
         if ($dev != 'none' && $dev != 'tmpfs') {
            //breedte balken berekenen
            $breed = 300;
            $gekleurd = $breed/100*$blocks_proc;
            $ongekleurd = $breed-$gekleurd;
            //kleur bepalen
            if ($blocks_proc <= 80) {
               $kleur = 'green';
               } else {
               $kleur = 'red';
               }
            //tekenen table
            echo 'Dev: '.$dev.' Mnt: '.$mountpoint.' '.$blocks_use.'/'.$blocks_tot.' Blocks<br>';
            echo '<table border="0" cellpadding="0" cellspacing="0">';
            echo '<tr><td width="20"></td><td width="'.$gekleurd.'" bgcolor="'.$kleur.'"></td><td width="'.$ongekleurd.'" bgcolor="grey"></td><td> '.$blocks_proc.'%</td></tr>';
            echo '</table>';
            }
         }
      $i++;
      }
?>
</body>
</html>
[/code]