Exemples
Exemple #1 Annulation d'une demande
<?php
/* Sera appelé lorsque la fonction eio_nop() aura terminé */
function my_nop_cb($data, $result) {
echo "my_nop ", $data, "\n";
}
// L'appel eio_nop() sera annulé
$req = eio_nop(EIO_PRI_DEFAULT, "my_nop_cb", "1");
var_dump($req);
eio_cancel($req);
// Cette fois, eio_nop() sera exécuté
eio_nop(EIO_PRI_DEFAULT, "my_nop_cb", "2");
// Exécution des demandes
eio_event_loop();
?>
<?php $temp_filename = dirname(__FILE__) ."/eio-temp-file.tmp"; touch($temp_filename); /* Sera appelé lorsque la fonction eio_chmod() aura terminé */ function my_chmod_callback($data, $result) { global $temp_filename; if ($result == 0 && !is_readable($temp_filename) && is_writable($temp_filename)) { echo "eio_chmod_ok"; } @unlink($temp_filename); } eio_chmod($temp_filename, 0200, EIO_PRI_DEFAULT, "my_chmod_callback"); eio_event_loop(); ?>
<?php /* Fonction de rappel pour la fonction de rappel personnalisée */ function my_custom_callback($data, $result) { var_dump($data); var_dump(count($result)); var_dump($result['data_modified']); var_dump($result['result']); } /* La demande personnalisée */ function my_custom($data) { var_dump($data); $result = array( 'result' => 1001, 'data_modified' => "mes données personnalisées", ); return $result; } $data = "my_custom_data"; $req = eio_custom("my_custom", EIO_PRI_DEFAULT, "my_custom_callback", $data); var_dump($req); eio_event_loop(); ?>
<?php /* * Crée un groupe de demandes permettant d'ouvrir, de lire et de fermer un fichier */ $temp_filename = dirname(__FILE__) ."/eio-file.tmp"; $fp = fopen($temp_filename, "w"); fwrite($fp, "some data"); fclose($fp); /* Sera appelé lorsque le groupe de demandes aura terminé */ function my_grp_done($data, $result) { global $temp_filename; var_dump($result == 0); @unlink($temp_filename); } /* Sera appelé lorsque la fonction eio_open() aura terminé */ function my_grp_file_opened_callback($data, $result) { global $my_file_fd, $grp; $my_file_fd = $result; var_dump($result > 0); // Crée une demande eio_read() et l'ajoute au groupe $req = eio_read($my_file_fd, 4, 0, EIO_PRI_DEFAULT, "my_grp_file_read_callback"); eio_grp_add($grp, $req); } /* Sera appelé lorsque la fonction eio_read() aura terminé */ function my_grp_file_read_callback($data, $result) { global $my_file_fd, $grp; var_dump($result); // Crée une demande eio_close() et l'ajoute au groupe $req = eio_close($my_file_fd); eio_grp_add($grp, $req); } $grp = eio_grp("my_grp_done", "my_grp_data"); // Crée une demande eio_open() et l'ajoute au groupe $req = eio_open($temp_filename, EIO_O_RDWR | EIO_O_APPEND , NULL, EIO_PRI_DEFAULT, "my_grp_file_opened_callback", NULL); eio_grp_add($grp, $req); var_dump($grp); eio_event_loop(); ?>
<?php function my_eio_poll($fd, $events, $arg) { /* Quelques régulations de libevent peuvent venir ici .. */ if (eio_nreqs()) { eio_poll(); } /* .. et ici */ } function my_nop_cb($d, $r) { var_dump($r); var_dump($d); } $base = event_base_new(); $event = event_new(); $fd = eio_get_event_stream(); var_dump($fd); eio_nop(EIO_PRI_DEFAULT, "my_nop_cb", "nop data"); eio_mkdir("/tmp/abc-eio-temp", 0750, EIO_PRI_DEFAULT, "my_nop_cb", "nop data"); /* d'autres appels eio_* ici ... */ // Définit les drapeaux de l'événement event_set($event, $fd, EV_READ /*| EV_PERSIST*/, "my_eio_poll", array($event, $base)); // Définit l'événement de base event_base_set($event, $base); // Active l'événement event_add($event); // Démarre la boucle d'événements event_base_loop($base); /* La mêmme chose est disponible viia l'interface libevent bufferisé */ ?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
int(3) int(0) string(8) "nop data" int(0) string(10) "mkdir data"