(PECL eio >= 0.0.1dev)
eio_read — Leer de un descriptor de fichero en un índice dado
$fd
, int $length
, int $offset
, int $pri
, callable $callback
[, mixed $data
= NULL
] )
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
.
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
.
eio_read() almacena los bytes leídos en el
argumento result
de la función
callback
.
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"