eio_readdir
(PECL eio >= 0.0.1dev)
eio_readdir — Lit le contenu d'un dossier
Description
$path
, int $flags
, int $pri
, callable $callback
[, string $data
= NULL
] )
Lit le contenu complet d'un dossier (via les appels systèmes
opendir, readdir et
closedir) et retourne soit les noms, soit un tableau
suivant la valeur de l'argument flags
.
Liste de paramètres
-
path
-
Chemin du dossier.
-
flags
-
Combinaison de constantes EIO_READDIR_*.
-
pri
-
La priorité de la requête :
EIO_PRI_DEFAULT
,EIO_PRI_MIN
,EIO_PRI_MAX
, ouNULL
. SiNULL
est passé, le paramètrepri
, en interne, est défini àEIO_PRI_DEFAULT
.-
data
-
représente les données personnalisées passées à la requête.
-
result
-
représente la valeur résultante spécifique à la requête ; basiquement, la valeur retournée par l'appel système correspondant.
-
req
-
est la ressource optionnelle de la requête qui peut être utilisée avec les fonctions comme eio_get_last_error()
-
-
callback
-
La fonction de rappel
callback
est appelée lorsque la requête est terminée. Elle doit correspondre au prototype suivant :void callback(mixed $data, int $result[, resource $req]);
-
data
-
Variables arbitraires à passer à la fonction de rappel
callback
.
Valeurs de retour
eio_readdir() retourne la ressource demandée en cas
de succès, ou FALSE
si une erreur survient. Définissez l'argument
result
de la fonction de rappel
callback
suivant le drapeau
flags
utilisé :
-
EIO_READDIR_DENTS
(entier) - Drapeau pour eio_readdir(). Si spécifié, l'argument de résultat de la fonction de rappel devient un tableau contenant les clés suivantes : 'names' - tableau de noms de dossiers 'dents' - tableau de struct eio_dirent - comme un tableau, mais contenant les clés spécifiques suivantes : 'name' - le nom du dossier ; 'type' - une des constantes EIO_DT_* ; 'inode' - le numbre d'inodes, si disponible, sinon ne sera pas spécifié ;
-
EIO_READDIR_DIRS_FIRST
(entier) - Lorsque ce drapeau est spécifié, les noms seront retournés dans un ordre où les dossiers arrivent en premier, et ensuite dans un ordre de statut optimal.
-
EIO_READDIR_STAT_ORDER
(entier) - Lorsque ce drapeau est spécifié, alors les noms seront retournés dans un ordre suivant le statut stat de chaque noeud. Si vous avez prévu d'appliquer la fonction stat() a tous les fichiers du dossier, il vous sera plus rapide d'utiliser ce drapeau.
-
EIO_READDIR_FOUND_UNKNOWN
(entier)
Types de noeud :
-
EIO_DT_UNKNOWN
(entier) - Un noeud de type inconnu (souvent le cas). Une utilisation de la fonction stat() est nécessaire.
-
EIO_DT_FIFO
(entier) - Un noeud de type FIFO
-
EIO_DT_CHR
(entier) - Type de noeud
-
EIO_DT_MPC
(entier) - Un noeud de type périphérique à caractères multiplexés (v7+coherent)
-
EIO_DT_DIR
(entier) - Un noeud de type dossier
-
EIO_DT_NAM
(entier) - Un noeud de type fichier nommé spécialement Xenix
-
EIO_DT_BLK
(entier) - Type de noeud
-
EIO_DT_MPB
(entier) - Bloc multiplexé du périphérique (v7+coherent)
-
EIO_DT_REG
(entier) - Type de noeud
-
EIO_DT_NWK
(entier) -
EIO_DT_CMP
(entier) - Un noeud de type spécial du réseau HP-UX
-
EIO_DT_LNK
(entier) - Un noeud de type lien
-
EIO_DT_SOCK
(entier) - Un noeud de type socket
-
EIO_DT_DOOR
(entier) - Un noeud de type Solaris door
-
EIO_DT_WHT
(entier) - Type de noeud
-
EIO_DT_MAX
(entier) - Valeur de type de noeud le plus haut possible
Exemples
Exemple #1 Exemple avec eio_readdir()
<?php /* Is called when eio_readdir() finishes */ function my_readdir_callback($data, $result) { echo __FUNCTION__, " called\n"; echo "donnée : "; var_dump($data); echo "résultat : "; var_dump($result); echo "\n"; } eio_readdir("/var/spool/news", EIO_READDIR_STAT_ORDER | EIO_READDIR_DIRS_FIRST, EIO_PRI_DEFAULT, "my_readdir_callback"); eio_event_loop(); ?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
my_readdir_callback called donnée : NULL résultat : array(2) { ["names"]=> array(7) { [0]=> string(7) "archive" [1]=> string(8) "articles" [2]=> string(8) "incoming" [3]=> string(7) "innfeed" [4]=> string(8) "outgoing" [5]=> string(8) "overview" [6]=> string(3) "tmp" } ["dents"]=> array(7) { [0]=> array(3) { ["name"]=> string(7) "archive" ["type"]=> int(4) ["inode"]=> int(393265) } [1]=> array(3) { ["name"]=> string(8) "articles" ["type"]=> int(4) ["inode"]=> int(393266) } [2]=> array(3) { ["name"]=> string(8) "incoming" ["type"]=> int(4) ["inode"]=> int(393267) } [3]=> array(3) { ["name"]=> string(7) "innfeed" ["type"]=> int(4) ["inode"]=> int(393269) } [4]=> array(3) { ["name"]=> string(8) "outgoing" ["type"]=> int(4) ["inode"]=> int(393270) } [5]=> array(3) { ["name"]=> string(8) "overview" ["type"]=> int(4) ["inode"]=> int(393271) } [6]=> array(3) { ["name"]=> string(3) "tmp" ["type"]=> int(4) ["inode"]=> int(393272) } } }