# eio_read

(PECL eio >= 0.0.1dev)

eio_read — Leer 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($resultado, 5, 2, EIO_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_temp, EIO_O_RDWR, NULL,
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() - Abrir un fichero
- eio_write() - Escribir en un fichero
- eio_close() - Cerrar un fichero
- eio_event_loop() - Monitorizar libeio hasta que todas las peticiones sean procesadas