(PECL eio >= 0.0.1dev)
eio_readdir — Leer un directorio al completo
$path,$flags,$pri,$callback,$data = NULL
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.
pathLa ruta del directorio.
flagsUna combinación de constantes EIO_READDIR_*.
priLa prioridad de la petición: EIO_PRI_DEFAULT , EIO_PRI_MIN , EIO_PRI_MAX , o null . Si
null es pasado, el parámetro pri, internamente, es definido a
EIO_PRI_DEFAULT .
callback La función
de retrollamada callback es llamada cuando la petición está terminada.
Debe corresponder al siguiente prototipo:
void callback(mixed $data, int $result[, resource $req]);datarepresenta los datos personalizados pasados a la petición.
resultrepresenta el valor resultante específico de la petición; básicamente, el valor retornado por la llamada al sistema correspondiente.
reqes el recurso opcional de la petición que puede ser utilizado 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 si ocurre un error.
Establece el argumento result de
la función callback function según
el parámetro flags:
EIO_READDIR_DENTS
(int )
Bandera eio_readdir(). Si se especifica, el argumento resultante de la llamada de retorno
se convierte en un array con las siguientes claves:
'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 )
Cuando se especifica esta bandera, los nombres serán devueltos en un orden donde probablemente los directorios vallan primero, en un orden de estadísticas óptimo.
EIO_READDIR_STAT_ORDER
(int )
Cuando se especifica esta bandera, los nombres serán devueltos en un orden
apropiado para realizar estadísticas (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 )
Tipo de nodo desconocido(muy común). Se necistan más estadísticas (stat() ).
EIO_DT_FIFO
(int )
Tipo de nodo FIFO
EIO_DT_CHR
(int )
Tipo de nodo
EIO_DT_MPC
(int )
Tipo de nodo de dispositivo de caracteres multiplexado (v7+coherent)
EIO_DT_DIR
(int )
Tipo de nodo de directorio
EIO_DT_NAM
(int )
Tipo de nodo de fichero Xenix nominado especial
EIO_DT_BLK
(int )
Tipo de nodo
EIO_DT_MPB
(int )
Dispositivo de bloqueo multiplexado (v7+coherent)
EIO_DT_REG
(int )
Tipo de nodo
EIO_DT_NWK
(int )
EIO_DT_CMP
(int )
Tipo de noto especial de red HP-UX
EIO_DT_LNK
(int )
Tipo de nodo de vínculo
EIO_DT_SOCK
(int )
Tipo de nodo socket
EIO_DT_DOOR
(int )
Tipo de nodo de puerta de Solaris
EIO_DT_WHT
(int )
Tipo de nodo
EIO_DT_MAX
(int )
Valor de tipo de nodo más alto
Ejemplo #1 Ejemplo de eio_readdir()
<?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();
?>Resultado del ejemplo anterior es 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)
}
}
}