Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2871 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1654192
GostSn
Lé Ou L'ApéRo?
Posté le 06-12-2007 à 23:10:30  profilanswer
 

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
mood
Publicité
Posté le 06-12-2007 à 23:10:30  profilanswer
 

n°1654198
flo850
moi je
Posté le 06-12-2007 à 23:13:32  profilanswer
 

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

n°1654202
GostSn
Lé Ou L'ApéRo?
Posté le 06-12-2007 à 23:21:14  profilanswer
 

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
n°1654203
FlorentG
Posté le 06-12-2007 à 23:21:29  profilanswer
 

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

n°1654204
FlorentG
Posté le 06-12-2007 à 23:23:50  profilanswer
 

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

n°1654206
GostSn
Lé Ou L'ApéRo?
Posté le 06-12-2007 à 23:24:26  profilanswer
 

vous pensez que ce que je demande existerais?


---------------
http://www.free-tribes.org
n°1654207
flo850
moi je
Posté le 06-12-2007 à 23:32:54  profilanswer
 

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:

n°1654215
GostSn
Lé Ou L'ApéRo?
Posté le 06-12-2007 à 23:50:29  profilanswer
 

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


---------------
http://www.free-tribes.org
n°1654254
flo850
moi je
Posté le 07-12-2007 à 08:35:45  profilanswer
 

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  
 

n°1654276
FlorentG
Posté le 07-12-2007 à 09:26:31  profilanswer
 

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
mood
Publicité
Posté le 07-12-2007 à 09:26:31  profilanswer
 

n°1654692
GostSn
Lé Ou L'ApéRo?
Posté le 07-12-2007 à 16:38:43  profilanswer
 

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
n°1654705
FlorentG
Posté le 07-12-2007 à 16:54:52  profilanswer
 

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
n°1654713
GostSn
Lé Ou L'ApéRo?
Posté le 07-12-2007 à 17:03:07  profilanswer
 

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
n°1654728
FlorentG
Posté le 07-12-2007 à 17:27:34  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
Scandir : que faire de cette fonction ?Sécurité et protection d'une page et d'un dossier
std::bad_alloc, impossible de savoir d'où il vient.Cherche qq'un qui voudrais réécrire mon programme JAVA (ou en Windev)
Fonction racine batchNeed help: besoin macro excel pour fonction recherche
[Html/Js] Envoyer une fonction quand on fait precedent[BATCH] recherche de dossier sur plusieurs serveurs
[Python] Cherche exercicesproblème de fonction javascript
Plus de sujets relatifs à : cherche une fonction "légere" pour savoir si dossier est vide


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR