(PECL eio >= 0.0.1dev)
eio_readdir — Lit le contenu d'un dossier
$path,$flags,$pri,$callback,$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.
pathflagspriEIO_PRI_DEFAULT, EIO_PRI_MIN, EIO_PRI_MAX, ou null.
Si null est passé, le paramètre pri, en interne, est défini à
EIO_PRI_DEFAULT.
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]);dataresultreqdatacallback.
eio_readdir() retourne la ressource demandée en cas
de succès, ou false si une erreur survient.
Définir l'argument
result de la fonction de rappel
callback suivant le drapeau
flags utilisé :
EIO_READDIR_DENTS
(entier)
'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 nombre d'inodes, si disponible, sinon ne sera pas spécifié ;
EIO_READDIR_DIRS_FIRST
(entier)
EIO_READDIR_STAT_ORDER
(entier)
stat de chaque nœud.
Pour appliquer la fonction stat() à tous
les fichiers du dossier, il sera plus rapide d'utiliser ce drapeau.
EIO_READDIR_FOUND_UNKNOWN
(entier)
Types de nœud :
EIO_DT_UNKNOWN
(entier)
EIO_DT_FIFO
(entier)
EIO_DT_CHR
(entier)
EIO_DT_MPC
(entier)
EIO_DT_DIR
(entier)
EIO_DT_NAM
(entier)
EIO_DT_BLK
(entier)
EIO_DT_MPB
(entier)
EIO_DT_REG
(entier)
EIO_DT_NWK
(entier)
EIO_DT_CMP
(entier)
EIO_DT_LNK
(entier)
EIO_DT_SOCK
(entier)
EIO_DT_DOOR
(entier)
EIO_DT_WHT
(entier)
EIO_DT_MAX
(entier)
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();
?>Résultat de l'exemple ci-dessus est 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)
}
}
}