(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
  ] ) : 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.
  
fdUn flujo, un recurso Socket, o un descriptor numérico de fichero.
lengthEl número máximo de bytes a leer.
offsetEl índice dentro del fichero.
priLa 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]);
datason datos personalizados pasados a la petición.
resultes el valor del resultado específico de la petición; básicamente, el valor devuelto por la correspondiente llamada al sistema.
reqes 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"