Funciones Eio
PHP Manual

eio_readdir

(PECL eio >= 0.0.1dev)

eio_readdirLeer un directorio al completo

Descripción

resource eio_readdir ( string $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, 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.

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)
    }
  }
}

Funciones Eio
PHP Manual