Files
doc-fr/reference/eio/examples.xml
George Peter Banyard b17d4aba70 Adding review tags
git-svn-id: https://svn.php.net/repository/phpdoc/fr/trunk@347785 c90b9560-bf6c-de11-be94-00142212c4b1
2019-07-22 01:21:44 +00:00

318 lines
6.8 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: ff4c97050881f69e37bc44cd4034c268566e376d Maintainer: yannick Status: ready -->
<!-- Reviewed: no -->
<!-- CREDITS: DavidA -->
<chapter xml:id="eio.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
&reftitle.examples;
<para>
<example>
<title>Annulation d'une demande</title>
<programlisting role="php">
<![CDATA[
<?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();
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
resource(4) of type (EIO Request Descriptor)
my_nop 2
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Appel de la fonction <function>eio_chmod</function></title>
<programlisting role="php">
<![CDATA[
<?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();
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
eio_chmod_ok
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Fabrication d'une demande personnalisée</title>
<programlisting role="php">
<![CDATA[
<?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();
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
resource(4) of type (EIO Request Descriptor)
string(14) "my_custom_data"
string(14) "my_custom_data"
int(2)
string(26) "mes données personnalisées"
int(1001)
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Création d'un groupe de demandes</title>
<programlisting role="php">
<![CDATA[
<?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();
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
resource(6) of type (EIO Group Descriptor)
bool(true)
string(4) "some"
bool(true)
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Utilisation de eio avec libevent</title>
<programlisting role="php"><![CDATA[
<?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é */
?>
]]></programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
int(3)
int(0)
string(8) "nop data"
int(0)
string(10) "mkdir data"
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Utilisation de eio avec l'extension event</title>
<programlisting role="php"><![CDATA[
<?php
$base = new EventBase();
// Retourne le flux d'interrogation eio.
// Notez que cette variable doit être active tant que la boucle d'événements est en cours d'exécution.
$eio_stream = eio_get_event_stream();
// Lie le flux d'interrogation eio à la boucle d'événement.
$poll_event = new Event($base, $eio_stream, Event::READ, function () {
if (eio_nreqs()) {
eio_poll();
}
});
$poll_event->add();
// Ajoute le job eio
eio_nop(EIO_PRI_DEFAULT, function () {
echo "eio_nop\n";
});
// Ajout les événements
$timer = Event::timer($base, function () {
echo "2 seconds elapsed\n";
});
$timer->add(2);
// Envoi les événements.
$base->dispatch();
?>
]]></programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
eio_nop
2 seconds elapsed
]]>
</screen>
</example>
</para>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->