CLOSEDIR |
Fermer un répertoire |
PHP 3+ |
Syntaxe
function closedir($dir_handle)
|
Paramètres
Nom |
Description |
$dir_handle |
Ce paramètre permet d'indiquer l'identificateur «Handle» ayant été attribué par la fonction opendir. |
Description
Cette fonction permet de fermer un répertoire ouvert préalablement par «opendir».
Remarques
- Fermeture des répertoires après lecture : Après avoir ouvert un répertoire avec opendir et parcouru son contenu
avec readdir, il est recommandé d'appeler closedir pour fermer la ressource associée. Bien que PHP libère automatiquement les
ressources à la fin du script, fermer explicitement le répertoire peut améliorer la gestion de la mémoire, surtout dans les scripts traitant plusieurs répertoires.
- Libération des ressources système : Laisser un répertoire ouvert inutilement peut consommer des ressources système, en particulier sur des systèmes
où il existe une limite sur le nombre maximal de fichiers et répertoires pouvant être ouverts simultanément. closedir permet de réduire ces risques et d'éviter des erreurs
comme :
- Ne fonctionne que sur des ressources valides : Si closedir est appelée avec une variable ne contenant pas un
pointeur de répertoire valide, PHP déclenche une erreur. Il est donc conseillé de vérifier que opendir a bien réussi avant d'utiliser
closedir, par exemple :
- $dir = opendir('/path/to/directory');
- if ($dir !== false) {
- closedir($dir);
- }
- Pas nécessaire pour les itérateurs de répertoires : Si l'on utilise la classe DirectoryIterator de SPL (Standard PHP Library) au
lieu des fonctions classiques, closedir devient inutile car les objets SPL gèrent automatiquement la fermeture des répertoires en fin de script ou lorsqu'ils ne
sont plus référencés.
- Ne supprime pas le répertoire : closedir ferme uniquement l'accès au répertoire mais ne le supprime pas du système de fichiers. Si l'on veut
supprimer un répertoire après l'avoir parcouru, il faut utiliser rmdir, en s'assurant d'abord qu'il est vide.
- Effet immédiat sur les opérations de lecture : Une fois closedir appelé sur un répertoire, toute tentative d'accès avec
readdir ou rewinddir sur la même ressource échouera. Il est donc important de terminer toutes les opérations nécessaires
avant de fermer le répertoire.
- Support sur tous les systèmes de fichiers compatibles PHP : closedir fonctionne de manière transparente sur différents systèmes de fichiers
(ext4, NTFS, FAT32,...), tant que PHP a les permissions nécessaires. Cependant, sur certains systèmes réseau (comme NFS), des retards dans la fermeture peuvent survenir si des
fichiers sont encore en cours d'utilisation.
- Aucune valeur de retour : Contrairement à fclose pour les fichiers, retournant true ou false, closedir ne retourne aucune
valeur. Il n'est donc pas possible de vérifier directement si la fermeture a réussi, ce qui oblige à gérer les erreurs en amont, notamment en s'assurant que le répertoire a
bien été ouvert avant de tenter de le fermer.
Références
PHP 4 - Guide du développeur, Edition First Interactive, Blake Schwendiman, 2002, ISBN: 2-84427-283-5, page 378
Dernière mise à jour : Mercredi, le 25 mars 2015