bonjour,
je n'ai pas étudier votre script, voici celui que j'utilise, ex : http://modos.lescigales.org/espace_disk/
placer les deux fichiers dans le même dossier!
le fichier image: etat_espace.php
<?php
/*cette fonction indique que la page devra etre interprétée comme une image PNG*/
header ("Content-type: image/png");
/*on crée une image de 200 pixels de large sur 20 de haut*/
$image = imagecreate(200,20);
/* la valeur de remplissage, nombre compris entre 0 et 100 inclus */
$pc = $_GET['pc'];
/* pour une image de 200 px, la partie à remplire en pourcentage fait 198px... on calcule la longueur à remplir en pixels */
$x=($pc*198)/100;
/*définition des couleurs... l'image est automatiquement remplie avec la première couleur que vous définissez. Ici on aura un fond blanc */
$blanc=imagecolorallocate($image, 255, 255, 255);
$noir=imagecolorallocate($image, 0, 0, 0);
$bleu=imagecolorallocate($image, 170, 204, 238);
/*on fait un petit cadre noir sur le pourtour de l'image*/
imagerectangle($image, 0, 0, 199, 19, $noir);
/*dessin du remplissage en fonction de $x : on dessine un rectangle de $x pixels de large rempli en bleu*/
imageFilledRectangle($image, 1, 1, $x, 18, $bleu);
/*on place le texte au milieu : [$pc %]...*/
imagestring($image, 3, 65, 1, $pc."%", $noir);
/*Pour finir, on génère l'image en png§ */
imagepng($image);
?>
le ficher de calcul et d'affichage: calcul_espace.php
<!DOCTYPE html>
<html lang="fr">
<head>
<title>calcul espace disque </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
$espace_disk = 100 ; //taille en Mo
$dir = '.'; // dossier a calculer ( mettre un point pour le dossier ou est le script), ../ pour remonter dans les dossiers
function poids($rep)
{
$t = null ;
$r = @opendir($rep);
while( $dir=@readdir($r) )
{
if( !in_array($dir, array("..", ".")) )
{
if( is_dir("$rep/$dir") )
{
$t += poids("$rep/$dir");
}
else
{
$t += @filesize("$rep/$dir");
}
}
}
@closedir($r);
return $t;
}
function unite($valeur)
{
if( $valeur >= pow(1024, 3) )
{
$valeur = round( $valeur / pow(1024, 3), 2);
return $valeur . ' go';
}
elseif( $valeur >= pow(1024, 2) )
{
$valeur = round( $valeur / pow(1024, 2), 2);
return $valeur . ' mo';
}
else
{
$valeur = round( $valeur / 1024, 2);
return $valeur . ' ko';
}
}
$pourcentage = (((round(poids($dir)/ pow(1024, 2), 2))*100)/$espace_disk);
// j'affiche l'image
echo 'Etat de l\'espace utilisé: ' . unite(poids($dir)) .' soit: <img src="etat_espace.php?pc='.$pourcentage.'" alt="espace disque occupé" /> sur '.$espace_disk.' Mo.<br />';
?>
</body>
</html>
Il est surement possible de rendre le script plus léger.....