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"
 

LoadingChargement en cours