cherche une fonction "légere" pour savoir si dossier est vide

cherche une fonction "légere" pour savoir si dossier est vide - PHP - Programmation

Marsh Posté le 06-12-2007 à 23:10:30    

SAlut!!!
 
Je suis a la recherche d'une fonction qui me permeterais de savoir si un dossier est vide.
J'avais penser à un filesize mais ça ne s'aplique pas aux dossier...
J'ai penser aussi à lister le contenue d'un répertoire, mais ça serrait une fonction trop lourde encore...
 
Voila, merci d'avance pour votre aide!


---------------
http://www.free-tribes.org
Reply

Marsh Posté le 06-12-2007 à 23:10:30   

Reply

Marsh Posté le 06-12-2007 à 23:13:32    

pourquoi le lister le contenu d'un repertoire serai trop lourd ?

Reply

Marsh Posté le 06-12-2007 à 23:21:14    

Ben dison que cette opération doit s'éffectuer pour chaques page que le visiteur visite
et vu cette fonction: http://www.asp-php.net/tutorial/asp-php/directory.php
je croi que ça demande trop de ressource..


---------------
http://www.free-tribes.org
Reply

Marsh Posté le 06-12-2007 à 23:21:29    

Après l'inclusion de scripts, tout ce qui touche aux tests d'existence de fichier/listage de dossiers prend 3 plombes. Donc effectivement, ça peut être intéressant de trouver une méthode rapide

Reply

Marsh Posté le 06-12-2007 à 23:23:50    

Sinon un opendir + readdir, dès que t'as autre chose que '.' ou '..', tu break : le dossier n'est pas vide.

Reply

Marsh Posté le 06-12-2007 à 23:24:26    

vous pensez que ce que je demande existerais?


---------------
http://www.free-tribes.org
Reply

Marsh Posté le 06-12-2007 à 23:32:54    

GostSn a écrit :

Ben dison que cette opération doit s'éffectuer pour chaques page que le visiteur visite
et vu cette fonction: http://www.asp-php.net/tutorial/asp-php/directory.php
je croi que ça demande trop de ressource..


elle est sympa l'arborescence de ton site :eek:

Reply

Marsh Posté le 06-12-2007 à 23:50:29    

heu j'ai pas compris ce que tu voulais dire..


---------------
http://www.free-tribes.org
Reply

Marsh Posté le 07-12-2007 à 08:35:45    

devoir verifier si il y a un changhement a chaque chargement depage c'est violent quand meme
 
tu as fait un explorateur de fichier en php ?  
 
 
sinon, essaye d emettre en cache l'arbrescence  
 

Reply

Marsh Posté le 07-12-2007 à 09:26:31    

Aller, ça m'éclate, voilà une fonction qui fait ça :

Code :
  1. <?php
  2.  
  3. /**
  4. * Librairie de fonctions utiles
  5. */
  6. class GostsnLib
  7. {
  8.  
  9.  
  10.    /**
  11.     * Vérifie si un dossier est vide
  12.     *
  13.     * @param string $dir Dossier (est censé exister)
  14.     *
  15.     * @return bool Si le dossier est vide ou pas
  16.     */
  17.    public static function isDirEmpty($dir)
  18.    {
  19.        $dir     = opendir($dir);
  20.        $isEmpty = true;
  21.  
  22.        while(($entry = readdir($dir)) !== false) {
  23.  
  24.            if($entry !== '.' && $entry !== '..') {
  25.  
  26.                $isEmpty = false;
  27.                break;
  28.            }
  29.        }
  30.  
  31.        closedir($dir);
  32.        return $isEmpty;
  33.    }
  34.  
  35. }
 

Et les tests unitaires associés :

 
Code :
  1. <?php
  2.  
  3. require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'GostsnLib.php';
  4.  
  5.  
  6. /**
  7. * Tests de la classe GostsnLib
  8. */
  9. class tests extends PHPUnit_Framework_TestCase
  10. {
  11.  
  12.  
  13.    /**
  14.     * Chemin vers dossier vide
  15.     * @var string
  16.     */
  17.    private $emptyDir;
  18.  
  19.  
  20.    /**
  21.     * Chemin vers dossier plein
  22.     * @var string
  23.     */
  24.    private $fullDir;
  25.  
  26.  
  27.    /**
  28.     * Fichier qui sera créé dans le dossier plein
  29.     * @var string
  30.     */
  31.    private $file;
  32.  
  33.  
  34.    public function __construct()
  35.    {
  36.        parent::__construct();
  37.  
  38.        $path = dirname(__FILE__) . DIRECTORY_SEPARATOR;
  39.        $this->emptyDir = $path . 'empty';
  40.        $this->fullDir  = $path . 'full';
  41.        $this->file     = $this->fullDir . DIRECTORY_SEPARATOR . 'file';
  42.    }
  43.  
  44.  
  45.    public function setUp()
  46.    {
  47.        mkdir($this->emptyDir);
  48.        mkdir($this->fullDir);
  49.  
  50.        touch($this->file);
  51.    }
  52.  
  53.  
  54.    public function tearDown()
  55.    {
  56.        rmdir($this->emptyDir);
  57.  
  58.        unlink($this->file);
  59.        rmdir($this->fullDir);
  60.    }
  61.  
  62.  
  63.  
  64.    /**
  65.     * Dossier vide, retourne true
  66.     */
  67.    public function testEmptyDir()
  68.    {
  69.        $result = GostsnLib::isDirEmpty($this->emptyDir);
  70.  
  71.        $this->assertTrue($result);
  72.    }
  73.  
  74.  
  75.    /**
  76.     * Dossier plein, retourne false
  77.     */
  78.    public function testFullDir()
  79.    {
  80.        $result = GostsnLib::isDirEmpty($this->fullDir);
  81.  
  82.        $this->assertFalse($result);
  83.    }
  84.  
  85. }


Message édité par FlorentG le 07-12-2007 à 09:27:39
Reply

Marsh Posté le 07-12-2007 à 09:26:31   

Reply

Marsh Posté le 07-12-2007 à 16:38:43    

flo850 a écrit :

devoir verifier si il y a un changhement a chaque chargement depage c'est violent quand meme
 
tu as fait un explorateur de fichier en php ?  
 
 
sinon, essaye d emettre en cache l'arbrescence  
 


heu non, l'esplorateur je l'ai déja fini:
http://www.phpcs.com/codes/SNEXPLO [...] 44859.aspx
 
enfait je fait sa pour un site, je voudrais savoir le nombre d'upload en attente de vérification dans le dossier "temps"!
l'interret premier de se site c'est qu'il n'utilise aucune base de donnée. c pas vraiment un interret lol, mais c'est pour me compliquer la vie car je m'emmerde en ce moment lol! et aussi surtout pour apprendre.
 
@FlorentG: c'est pas un peut lourd comme fonction?


Message édité par GostSn le 07-12-2007 à 16:39:47

---------------
http://www.free-tribes.org
Reply

Marsh Posté le 07-12-2007 à 16:54:52    

Y'a pas d'autres possibilités je crois. Quelque soit la fonction, y'aura toujours une ouverture du dossier. En t'itère au pire sur
3 éléments, au premier élément pas conforme (donc au premier fichier), on se barre, y'a pas plus optimisé.


Message édité par FlorentG le 07-12-2007 à 16:55:07
Reply

Marsh Posté le 07-12-2007 à 17:03:07    

Bon ben je vais faire autrement allors,
l'ors de l'upload un fichier sera crée, et quand les modérateurs auront classer et aprouver les mp3, ils supprimeront ce fichier.
je pense que un fileexist serra plus légé..


---------------
http://www.free-tribes.org
Reply

Marsh Posté le 07-12-2007 à 17:27:34    

Essaye d'abord comme ça, puis profile ton application, tu verra bien ce qui prend le plus de temps. Ca ne sert pas à grand chose d'imaginer le temps que ça prend.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed