(PECL eio >= 0.0.1dev)
eio_readdir — Leer un directorio al completo
Leer un directorio al completo (mediante las llamadas al sistema de opendir
,
readdir
y closedir
) y devuelve o los nombres o un array en
el argumento result
de la función callback
,
dependiendo del argumento flags
.
path
La ruta del directorio.
flags
Una combinación de constantes EIO_READDIR_*.
pri
La prioridad de petición: EIO_PRI_DEFAULT
, EIO_PRI_MIN
, EIO_PRI_MAX
, o null
.
Si se pasa null
, pri
es establecido internamente a
EIO_PRI_DEFAULT
.
callback
La función callback
es llamada cuando la petición está hecha.
Debería seguir el siguiente prototipo:
void callback(mixed $data, int $result[, resource $req]);
data
son datos personalizados pasados a la petición.
result
es el valor del resultado específico de la petición; básicamente, el valor devuelto por la correspondiente llamada al sistema.
req
es el recurso de petición opcional que puede usarse con funciones como eio_get_last_error()
data
Variable arbitraria pasada a callback
.
eio_readdir() devuelve un recurso de petición en caso de éxito, o false
en caso de error.
Establece el argumento result
de
la función callback
function según
el parámetro flags
:
EIO_READDIR_DENTS
(int)
'names'
- array de nombres de directorios
'dents'
- array de structura eio_dirent
-como
los arrays pero teniendo las siguientes claves:
'name'
- el nombre del directorio;
'type'
- una de las constantes
EIO_DT_*;
'inode'
- el número de inodo, si está disponible, de otro modo
sin especificar;
EIO_READDIR_DIRS_FIRST
(int)
EIO_READDIR_STAT_ORDER
(int)
stat
) con cada uno. Cuando se planea usar
la función stat() para realizar estadísticas de todos los archivos del directorio dado, el
orden devuelto probablemente sea
más rápido.
EIO_READDIR_FOUND_UNKNOWN
(int)
Tipos de nodos:
EIO_DT_UNKNOWN
(int)
EIO_DT_FIFO
(int)
EIO_DT_CHR
(int)
EIO_DT_MPC
(int)
EIO_DT_DIR
(int)
EIO_DT_NAM
(int)
EIO_DT_BLK
(int)
EIO_DT_MPB
(int)
EIO_DT_REG
(int)
EIO_DT_NWK
(int)
EIO_DT_CMP
(int)
EIO_DT_LNK
(int)
EIO_DT_SOCK
(int)
EIO_DT_DOOR
(int)
EIO_DT_WHT
(int)
EIO_DT_MAX
(int)
Ejemplo #1 eio_readdir() example
<?php
/* Es llamada cuando eio_readdir() finaliza */
function mi_llamada_retorno_readdir($datos, $resultado) {
echo __FUNCTION__, " llamada\n";
echo "datos: "; var_dump($datos);
echo "resultado: "; var_dump($resultado);
echo "\n";
}
eio_readdir("/var/spool/news", EIO_READDIR_STAT_ORDER | EIO_READDIR_DIRS_FIRST,
EIO_PRI_DEFAULT, "mi_llamada_retorno_readdir");
eio_event_loop();
?>
El resultado del ejemplo sería algo similar a:
mi_llamada_retorno_readdir llamada datos: NULL resultado: 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) } } }