IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Différence de taille d'un dossier entre fonction PHP et commande Linux


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 15
    Points : 12
    Points
    12
    Par défaut [Tableaux] Différence de taille d'un dossier entre fonction PHP et commande Linux
    Yop,

    Voulant utiliser la fonction shell_exec() le moins possible j'ai donc remplacé ma fonction de calcul utilisant la commande 'du -shc' par une fonction utilisant que du PHP.
    Mon problème est le suivant, la taille retourné par les deux fonctions est différente !!

    La fonction utilisant shell_exec() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function gzw_du($repertoire)
    {
    	return exec('du -shc ' .escapeshellarg($repertoire). ' | tail -1 | cut -f1');
    }
     
    echo gzw_du('/var/www/panel/');
    Le résultat retourné est 2.7 Méga.

    La fonction utilisant que du PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    function taille_dossier($rep)
    {
    	$racine = opendir($rep);
    	$taille = 0;
     
    	while($dossier = readdir($racine))
    	{
    		if(!in_array($dossier, Array('..', '.')))
    		{
    			if(is_dir($rep.'/'.$dossier))
    			{
    				$taille += taille_dossier($rep.'/'.$dossier);
    			}
    				else
    				{
    					$taille += filesize($rep.'/'.$dossier);
    				}
    		}
    	}
     
    	closedir($racine);
    	return $taille;
    }
     
    echo taille_dossier('/var/www/panel/');
    Le résultat retourné est 2221783 Octets (résultat converti en méga ici).

    Qu'ai-je oublié, mal fait ?
    Merci de votre.

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Bonjour,

    J'ai une première question, surement idiote, mais est ce normal que dans le premier cas vous regardiez la taille de /var/www et dans le second cas de /var/www/panel ??

    Cordialement,

    koopajah

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par koopajah
    Bonjour,

    J'ai une première question, surement idiote, mais est ce normal que dans le premier cas vous regardiez la taille de /var/www et dans le second cas de /var/www/panel ??

    Cordialement,

    koopajah
    Oups, c'est une erreur dans mon post, j'audite bien les deux mêmes répertoires.
    Merci.

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Rebonjour donc,

    C'est noté pour l'erreur, mais j'ai préféré demander!

    J'ai fait le test rapidement sous windows. Quand je regarde les propriétés du dossier il y a deux champs, la taille réelle et la taille sur le disque dur. Ton script php me renvoie la taille du dossier exactement.

    "du" quant à lui semble renvoyer les informations concernant le disque dur lui meme et donc peut etre renvoie-t-il la taille que le dossier prend réellement sur le disque.

    J'espère que c'est une piste!

  5. #5
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut Une piste
    Une autre piste semble d'être d'utiliser ca :

    http://www.php.net/manual/en/functio...otal-space.php

    Bon courage,

    koopajah

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par koopajah
    Une autre piste semble d'être d'utiliser ca :

    http://www.php.net/manual/en/functio...otal-space.php

    Bon courage,

    koopajah
    Je vais tester ça et je vous tiens au courant.
    Merci.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Bon est bien ça fonctionne avec la fonction disk_total_space.
    J'utilise la fonction donnée dans les exemples :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    function du( $dir )
    {
        $res = `du -sk $dir`;             // Unix command
        preg_match( '/\d+/', $res, $KB ); // Parse result
        $MB = round( $KB[0] / 1024, 1 );  // From kilobytes to megabytes
        return $MB;
    }
     
    $dirSize = du('/path/to/dir/');
    ?>
    Merci de ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Différence de taille entre framework 3.5 et 4
    Par maa dans le forum Framework .NET
    Réponses: 9
    Dernier message: 21/04/2013, 04h58
  2. Réponses: 14
    Dernier message: 28/08/2008, 19h27
  3. [Tableaux] Différence entre deux syntaxes
    Par baggie dans le forum Langage
    Réponses: 23
    Dernier message: 30/04/2008, 14h05
  4. Réponses: 4
    Dernier message: 27/07/2006, 16h08
  5. Récupérer la taille d'un dossier...
    Par Life Hunter dans le forum Langage
    Réponses: 5
    Dernier message: 11/08/2005, 13h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo