eio_read

(PECL eio >= 0.0.1dev)

eio_readLeer de un descriptor de fichero en un índice dado

Descripción

eio_read ( mixed $fd , int $length , int $offset , int $pri , callable $callback [, mixed $data = NULL ] ) : resource

eio_read() lee hasta length bytes desde el descriptor de fichero fd empezando en offset. Los bytes leídos son almacenados en el argumento result de callback.

Parámetros

fd

Un flujo, un recurso Socket, o un descriptor numérico de fichero.

length

El número máximo de bytes a leer.

offset

El índice dentro del fichero.

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_read() almacena los bytes leídos en el argumento result de la función callback.

Ejemplos

Ejemplo #1 Ejemplo de eio_read()

<?php
// Abrir un fichero temporal y escribir algunos bytes en él
$nombre_fichero_temp "eio-temp-file.tmp";
$fp fopen($nombre_fichero_temp"w");
fwrite($fp"1234567890");
fclose($fp);

/* Es llamada cuando eio_read() termina */
function mi_llamada_retorno_read($datos$resultado) {
    global 
$nombre_fichero_temp;

 
// Imprimir los bytes leídos
    
var_dump($resultado);

 
// Cerrar el fichero
    
eio_close($datos);
    
eio_event_loop();

 
// Eliminar el fichero temporal
    
@unlink($nombre_fichero_temp);
}

/* Es llamada cuanco eio_open() termina */
function mi_llamada_retorno_fichero abierto($datos$resultado) {
 
// $resultado debería contener el descriptor del fichero
    
if ($resultado 0) {
  
// Leer 5 bytes empezando desde el tercero
        
eio_read($resultado52EIO_PRI_DEFAULT"mi_llamada_retorno_read"$resultado);
        
eio_event_loop();
    } else {
  
// eio_open() falló
        
unlink($datos);
    }
}

// Abrir el fichero para leer y escribir
eio_open($nombre_fichero_tempEIO_O_RDWRNULL,
    
EIO_PRI_DEFAULT"mi_llamada_retorno_fichero abierto"$nombre_fichero_temp);
eio_event_loop();
?>

El resultado del ejemplo sería algo similar a:

string(5) "34567"

Ver también

  • eio_open
  • eio_write
  • eio_close
  • eio_event_loop