(PECL eio >= 0.0.1dev)
eio_read — Lit un descripteur de fichier à une position donnée
$fd
, int $length
, int $offset
, int $pri
, callable $callback
[, mixed $data = NULL
] )
eio_read() lit length octets
depuis le descripteur de fichier fd à la position
offset. Les octets lus sont stockés dans l'argument
result de la fonction de rappel callback.
fd
Un flux, une ressource de socket, ou un descripteur de fichier
length
Nombre maximal d'octets à lire.
offset
Position dans le fichier.
pri
La priorité de la requête : EIO_PRI_DEFAULT, EIO_PRI_MIN, EIO_PRI_MAX, ou NULL.
Si NULL est passé, le paramètre pri, en interne, est défini à
EIO_PRI_DEFAULT.
data
représente les données personnalisées passées à la requête.
result
représente la valeur résultante spécifique à la requête ; basiquement, la valeur retournée par l'appel système correspondant.
req
est la ressource optionnelle de la requête qui peut être utilisée avec les fonctions comme eio_get_last_error()
callback
La fonction de rappel callback
est appelée lorsque la requête est terminée.
Elle doit correspondre au prototype suivant :
void callback(mixed $data, int $result[, resource $req]);
data
Variables arbitraires à passer à la fonction de rappel
callback.
eio_read() stocke les octets lus dans l'argument
result de la fonction de rappel callback.
Exemple #1 Exemple avec eio_read()
<?php
// Ouvre un fichier temporaire et y écrit quelques octets
$temp_filename = "eio-temp-file.tmp";
$fp = fopen($temp_filename, "w");
fwrite($fp, "1234567890");
fclose($fp);
/* Sera appelé lorsque la fonction eio_read() aura terminé */
function my_read_cb($data, $result) {
global $temp_filename;
// Affiche les octets lus
var_dump($result);
// Ferme le fichier
eio_close($data);
eio_event_loop();
// Supprime le fichier temporaire
@unlink($temp_filename);
}
/* Sera appelé lorsque la fonction eio_open() aura terminé */
function my_file_opened_callback($data, $result) {
// $result doit contenir le descripteur de fichier
if ($result > 0) {
// Lit 5 octets en commençant par le troisième
eio_read($result, 5, 2, EIO_PRI_DEFAULT, "my_read_cb", $result);
eio_event_loop();
} else {
// eio_open() a échoué
unlink($data);
}
}
// Ouvre le fichier en lecture et en écriture
eio_open($temp_filename, EIO_O_RDWR, NULL,
EIO_PRI_DEFAULT, "my_file_opened_callback", $temp_filename);
eio_event_loop();
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
string(5) "34567"