Récuperer le poid d'un repertoire

[Résolu]
Signaler
Messages postés
98
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
16 mars 2009
-
Messages postés
1123
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
-
Bonsoir,

J'ai un petit soucis. Je doit récuperer la taille d'un répertoire pour limiter l'upload de fichier.
Cependant, que ce soit avec ma fonction ou directement dans mon client ftp, on ne la voit pas.

Voici la fonction :






function DirSize($path , $recursive=TRUE){
  $result = 0;
  if(!is_dir($path) || !is_readable($path)) {
  return 0;
  } else {
  $fd = dir($path);
  while($file = $fd->read()){
  if(($file != "." ) && ($file != ".." )){
  if(@is_dir("$path/$file/" )) {
  $result += $recursive?DirSize("$path/$file/" ):0;
  } else {
  $result += filesize("$path/$file" );
  }
  }
  }
  $fd->close();
  return $result;
  }
  }






Je récupere ensuite le résultat dans une variable :
$taille_dossier_actuel = DirSize("../chemin/chemin/repertoire" );

Si vous pouviez m'éclaircir les idées.. oO
Merci d'avance !

33 réponses

Messages postés
98
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
16 mars 2009

Double post.

Ca y est ca marche. J'ai refait tous les test de A à Z.

Ma fonction est dans une include, je l'ai mise directement dans la page, et la ca a marché (j'avais deja testé en vain). Je msuis dit c pas logique, je l'ai donc remis dans mon fichier include et la ca marche aussi. Il y a quelque chose qui m'échappe.oO

Enfin  bon, en tout cas je vous remercie à tous pour votre aide, et désolé de vous avoir fait perdre votre temp.
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
17
Salut,

J'ai déjà utilisé cette fonction exactement en l'état (je sais plus d'où elle sort) et elle fonctionne très bien... question à 2 balles: tu as fais un echo de ta variable $taille_dossier_actuel ? Sinon il se peut que ton path ne passe pas le premier test.

*****
noisy communication - wherever, be everywhere!
Messages postés
1123
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
A vue d'oeil, la fonction devrait marcher.
As-tu testé si ton repertoire est accessible en lecture ?
Messages postés
98
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
16 mars 2009

Bonjour et merci pour vos réponse

Oui j'utilise bien un écho pour récuperer la valeur. En faite le chiffre 0 est renvoyé, alors qu'il y a 6 mo dedant.
Quand jouvre le ftp, j'ai constaté qu'il maffiche la taille des fichiers, mais pas des dossiers (ftp expert).

> As-tu testé si ton repertoire est accessible en lecture ?
Il est en chmod 744 donc oui il est lisible, sauf si tu me parles d'autre chose?
Messages postés
1123
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
oui oui c'était bien ca ma question :)

Si tu essaye une fois sans répertoire, et ensuite avec répertoire (histoire de savoir d'ou viens l'erreur).
Met juste un zip de 6 Mo dedans et tu verra.

Par contre je sais pas à combien tu veux limiter, mais fait le pas trop gros car le script risque de prendre du temps sinon pour en connaitre la taille ! :/
Messages postés
98
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
16 mars 2009

C'est pareil, le resultat reste 0.
Dans ftp expert quand je selectionne le dossier puis propriété il me dit 0 aussi (alors qu'il y a du contenu). Pour connaitre le poid du contenu il faut que j'entre dans le dossier et que je selectionne tous les fichier qui s'y trouvent.

Voici un screen du ftp :

http://www.servimg.com/image_preview.php?i=3&u=10059635

http://mangasei.jexiste.fr 
Messages postés
1123
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
C'est normal qu'il ne donne pas la taille des dossiers, tout simplement pour éviter d'aller récursivement dans les repertoires pour en évaluer la taille, car si ta beaucoup de données / répertoires, ca prendra trop de temps, ca va submerger le serveur, tout ca juste pour une info que la plupart des personnes ne font même pas attention.

C'est une sorte de respect envers le serveur :p

Apres pour ton script j'ai du mal à comprendre, il devrait marcher normallement ?!

C'est quel environnement ? Linux ou Windows ? (le serveur)
Messages postés
98
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
16 mars 2009

Le script marche puisque j'ai un retour, qui est 0. (ou marche a moitier je nsai pas)
J'utilise un serveur Linux.

http://mangasei.jexiste.fr 
Messages postés
1123
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
function DirSize($path , $recursive=TRUE){
    $result = 0;
    if(!is_dir($path) || !is_readable($path)) {
        echo "Ce n'est pas un repertoire valide !






";







        return 0;
    } else {
        $fd = dir($path);
       echo $path." est un répertoire
";
        while($file = $fd->read()){
            if(($file != "." ) && ($file != ".." )){
                if(@is_dir("$path/$file/" )) {
                   echo





$path."/".$file."/ est un répertoire !
";
                   echo $recursive ? "Mode recursif On" : "Mode récursif Off";
                   echo "
";






                   $result += $recursive?DirSize("$path/$file/" ):0;
                } else {
                   echo "C'est un fichier, ca taille est de :";
                   echo





filesize("$path/$file" );
                   echo "
";






                    $result += filesize("$path/$file" );
                }
            }
        }
    $fd->close();
    return $result;
    }
}

Remplace ton code par celui-ci, et montre moi ce qu'il affiche ! :p
Messages postés
98
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
16 mars 2009

"Ce n'est pas un repertoire valide ! "

En quoi il ne serait pas valide ?

http://mangasei.jexiste.fr 
Messages postés
1123
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
fait un
var_dump (i
s_dir($path));
echo "\n\n";
var_dump (
is_readable($path));

et affiche la source :)
Messages postés
98
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
16 mars 2009

Messages postés
98
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
16 mars 2009

arf desolé pour le up j'ai pas vu page 2
http://mangasei.jexiste.fr 
Messages postés
98
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
16 mars 2009

Il faut le mettre ou ce petit bout de code exactement ?

Je l'ai mis ici :

function DirSize($path , $recursive=TRUE){
    $result = 0;
    var_dump (is_dir($path));
    echo "\n\n";
    var_dump (is_readable($path));
etc..
  http://mangasei.jexiste.frCa me sort : bool(false)


bool(false)
Ce n'est pas un repertoire valide !

Je ne comprend pas ^^
Messages postés
1123
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
donc ca veut dire que ta variable $path n'est pas un répertoire tout court !

c'est quoi que tu lui passe ? /path/to/file ou /path/to/file/ ?
Messages postés
98
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
16 mars 2009

desolé, je comprend pas ce que tu me demande la
http://mangasei.jexiste.fr 
Messages postés
1123
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
Ta fonction, tu l'appelle bien avec un des parametres, genre le dossier ou tu veux qu'elle effectue le comptage, c'est quoi les valeurs que tu lui donne ?
Messages postés
98
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
16 mars 2009

$taille_dossier_actuel = DirSize("../redirections/".$dossier_site."/" );



http://mangasei.jexiste.fr 
Messages postés
1123
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
et que contient $dossier_site ?
Messages postés
98
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
16 mars 2009

le nom du dossier; dans mon test "clavier" :  ../redirections/clavier/