Calcul de l'espace utilisé sur le serveur

Signaler
Messages postés
3
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
31 juillet 2003
-
Messages postés
435
Date d'inscription
vendredi 20 septembre 2002
Statut
Membre
Dernière intervention
20 novembre 2004
-
salut
voilà, j'ai deux questions :

1. j'ai mis en place un script qui permet de scruter l'ensemble des dossiers et de donner leur taille, puis à la fin de donner la taille totale utilisée par les dossiers.
vous pouvez voir le résultat à cette adresse :
http://jaketstream.membres.jexiste.org/espace.php

le calcul se fait en octets et est appelé par $size
ensuite le résultat est donné en Mo par ce calcul :

$sizem =  (int) (($size/1024)/1024);


donc pour l'affichage de l'espace occupé en Mo, j'appelle $sizem par cette ligne :

print "<li> Total : $sizem Mo  ($size octets)</li>\n";


jusque là pas de problème. tout fonctionne.
mais ensuite j'ai mis en place un calcul pour donner l'espace restant (une simple soustraction) :

$freeB =$quota-$sizem;


mais là, le calcul ne se fait pas bien que j'ai renseigné la variable $quota.

pour plus de simplicité je vous donne le script :

<? 
$quota= "500"; //le quota de votre espace disque sur votre serveur, exprimé en Mo 

# on demande la taille a la racine
$size=dirsize(".", 0);

function dirsize($maindir, $level)
{
    # securité pour eviter les boucles trop longues
    if($level>5)
        return 0;
    
    print "\n";

    $mydir = @opendir($maindir) ;
    while($fn = @readdir($mydir))
    {
        if(!in_array($fn, Array("..", ".")))
        {
            if(is_dir("$maindir/$fn"))
            {
                print "<li>$maindir/$fn : 
\n";
                $size+=dirsize("$maindir/$fn", ($level + 1));
                print "</li>\n";
            }
            else
            {
                $size+=@filesize("$maindir/$fn");
            }
        }
    }
    @closedir($mydir);

    # on calcule la taille en Mo
    $sizem = (int) (($size/1024)/1024);

    print "<li> Total : $sizem Mo  ($size octets)</li>\n";
    print "\n";
    return $size;
}

 
$freeB =$quota-$sizem; // calcul de l'espace restant

echo "ETAT DU COMPTE
"; 
echo "Espace total: $quota Mo 
"; // Affichage de l'espace Total indiqué plus haut
echo "Espace utilisé : $sizem Mo 
"; // Affichage de l'espace utilisé
echo "Espace libre: $freeB Mo
"; // Affichage de l'espace restant

?>


alors ma question est : pourquoi $sizem s'affiche après l'arborescence mais ne fonctionne pas dans le calcul ??

2.voilà ma deuxième question : mon hébergeur (jexiste.org) affiche un espace utilisé beaucoup plus grand que celui trouvé par l'intermédiaire de ce script. Je me suis dit qu'ils incluaient la base de donnée, mais celle ci fait dans les 600 Ko. Hors la différence est de plusieurs Mo.
Ils m'ont répondu que leur calcul est fait d'après des données Unix donc irréprochable. Ok pour moi, mais d'où vient la différence ?
à l'heure où j'écris ce message, j'ai un espace utilisé de 339 Mo avec mon script et chez l'hébergeur, il donne 374 Mo.
Alors ? c'est grave ?

merci de me répondre et désolé si le message est un peu long :blush)

@+

6 réponses

Messages postés
1123
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
26 juin 2008
1
Salut

t'as essayé diskfreespace() et disk_total_space(), c assez pratique (mais refusé chez beaucoup d'hebergeur

Pour le reste aucune idée g pas super envi de mon plonger dans le code aujourd'hui lol

++

------
Je cherche un poste de developpeur PHP mysql, si vous avez une proposition ou si vous voulez mon CV = => [mailto:tortue.geniale@laposte.net mailto:tortue.geniale@laposte.net]

=> http://www.kame-house.org La plus grosse base de données de DA du net
Messages postés
435
Date d'inscription
vendredi 20 septembre 2002
Statut
Membre
Dernière intervention
20 novembre 2004

en effet sa fait une grosse erreur es tu sur d'avoir le controle d'écriture lecture de tout les fichiers (par ex .htacess mais il fait 10 ko) je sias que chez mon hébergeur celui ci prends dans ma racine un répertoire associé aux sessions et à sql pourtant je n'y pas le droit d'y aller mais quand meme une erreur de 40 mo essai de tout calculé en octet puis de convertir à la fin..

\->Bye Defkrie !?!
Messages postés
3
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
31 juillet 2003

oui le calcul est fait, acutellement :
Total : 350 Mo (367167671 octets) par mon script et
386,1 Mo sur 500 Mo par mon hébergeur
ma base de données fait 676.6 Ko

mais là n'est pas "trop" le problème. Je voudrais bien savoir pourquoi ma variable $sizem ne s'affiche pas la seconde fois.

mais merci pour tes renseignements
Messages postés
3
Date d'inscription
samedi 7 juin 2003
Statut
Membre
Dernière intervention
31 juillet 2003

oui le calcul est fait, acutellement :
Total : 350 Mo (367167671 octets) par mon script et
386,1 Mo sur 500 Mo par mon hébergeur
ma base de données fait 676.6 Ko

mais là n'est pas "trop" le problème. Je voudrais bien savoir pourquoi ma variable $sizem ne s'affiche pas la seconde fois.

mais merci pour tes renseignements
Messages postés
435
Date d'inscription
vendredi 20 septembre 2002
Statut
Membre
Dernière intervention
20 novembre 2004

je crois que sa vient de ta soustraction tu utlise la variable $sizem or elle est dans une fonction et donc si tu ne la sort pas de la fonction tu ne peut l'utliser ensuite...

\->Bye Defkrie !?!
Messages postés
435
Date d'inscription
vendredi 20 septembre 2002
Statut
Membre
Dernière intervention
20 novembre 2004

Voila jai examiné ton code et jai trouvé l'erreur tout fonctionne et tout est parfait sauf l'addition final ex:

Total : 0 Mo (393609 octets)
+ Total : 0 Mo (2682 octets)

= Total : 0 Mo (397421 octets) Faux // erreur dans l'additon totale

= 396 291 une faible erreur soite mais sur un site entier tu trouve à la fin plusieurs mo ...

Pourquoi cet erreur se produit je sais pas encore mais essai de stocker la taille des répertoire et fichiers et de les additioner autrement à la fin sinon tout est bon

\->Bye Defkrie !?!