eio_readdir
(PECL eio >= 0.0.1dev)
eio_readdir — Leer un directorio al completo
Descripción
$path
, int $flags
, int $pri
, callable $callback
[, string $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.
Parámetros
-
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, oNULL. Si se pasaNULL,pries establecido internamente aEIO_PRI_DEFAULT. -
callback -
La función
callbackes 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.
Valores devueltos
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(integer) - 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(integer) - 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(integer) - 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(integer)
Tipos de nodos:
-
EIO_DT_UNKNOWN(integer) - Tipo de nodo desconocido(muy común). Se necistan más estadísticas (stat()).
-
EIO_DT_FIFO(integer) - Tipo de nodo FIFO
-
EIO_DT_CHR(integer) - Tipo de nodo
-
EIO_DT_MPC(integer) - Tipo de nodo de dispositivo de caracteres multiplexado (v7+coherent)
-
EIO_DT_DIR(integer) - Tipo de nodo de directorio
-
EIO_DT_NAM(integer) - Tipo de nodo de fichero Xenix nominado especial
-
EIO_DT_BLK(integer) - Tipo de nodo
-
EIO_DT_MPB(integer) - Dispositivo de bloqueo multiplexado (v7+coherent)
-
EIO_DT_REG(integer) - Tipo de nodo
-
EIO_DT_NWK(integer) -
EIO_DT_CMP(integer) - Tipo de noto especial de red HP-UX
-
EIO_DT_LNK(integer) - Tipo de nodo de vínculo
-
EIO_DT_SOCK(integer) - Tipo de nodo socket
-
EIO_DT_DOOR(integer) - Tipo de nodo de puerta de Solaris
-
EIO_DT_WHT(integer) - Tipo de nodo
-
EIO_DT_MAX(integer) - Valor de tipo de nodo más alto
Ejemplos
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)
}
}
}