<?xml version="1.0" encoding="utf-8"?> <!-- $Revision$ --> <chapter xml:id="eio.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> &reftitle.examples; <para> <example> <title>Cancelling a request</title> <programlisting role="php"> <![CDATA[ <?php /* Is called when eio_nop() finished */ function my_nop_cb($data, $result) { echo "my_nop ", $data, "\n"; } // This eio_nop() call will be cancelled $req = eio_nop(EIO_PRI_DEFAULT, "my_nop_cb", "1"); var_dump($req); eio_cancel($req); // This time eio_nop() will be processed eio_nop(EIO_PRI_DEFAULT, "my_nop_cb", "2"); // Process requests 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>Calling <function>eio_chmod</function></title> <programlisting role="php"> <![CDATA[ <?php $temp_filename = dirname(__FILE__) ."/eio-temp-file.tmp"; touch($temp_filename); /* Is called when eio_chmod() finished */ 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>Making a custom request</title> <programlisting role="php"> <![CDATA[ <?php /* Callback for the custom callback */ function my_custom_callback($data, $result) { var_dump($data); var_dump(count($result)); var_dump($result['data_modified']); var_dump($result['result']); } /* The custom request */ function my_custom($data) { var_dump($data); $result = array( 'result' => 1001, 'data_modified' => "my custom data", ); 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(14) "my custom data" int(1001) ]]> </screen> </example> </para> <para> <example> <title>Grouping requests</title> <programlisting role="php"> <![CDATA[ <?php /* * Create a group request to open, read and close a file */ $temp_filename = dirname(__FILE__) ."/eio-file.tmp"; $fp = fopen($temp_filename, "w"); fwrite($fp, "some data"); fclose($fp); /* Is called when the group requests are done */ function my_grp_done($data, $result) { global $temp_filename; var_dump($result == 0); @unlink($temp_filename); } /* Is called when eio_open() done */ function my_grp_file_opened_callback($data, $result) { global $my_file_fd, $grp; $my_file_fd = $result; var_dump($result > 0); // Create eio_read() request and add it to the group $req = eio_read($my_file_fd, 4, 0, EIO_PRI_DEFAULT, "my_grp_file_read_callback"); eio_grp_add($grp, $req); } /* Is called when eio_read() done */ function my_grp_file_read_callback($data, $result) { global $my_file_fd, $grp; var_dump($result); // Create eio_close() request and add it to the group $req = eio_close($my_file_fd); eio_grp_add($grp, $req); } $grp = eio_grp("my_grp_done", "my_grp_data"); // Create eio_open() request and add it to the group $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>Using eio with libevent</title> <programlisting role="php"><![CDATA[ <?php function my_eio_poll($fd, $events, $arg) { /* Some libevent regulation might go here .. */ if (eio_nreqs()) { eio_poll(); } /* .. and here */ } 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"); /* some other eio_* calls here ... */ // set event flags event_set($event, $fd, EV_READ /*| EV_PERSIST*/, "my_eio_poll", array($event, $base)); // set event base event_base_set($event, $base); // enable event event_add($event); // start event loop event_base_loop($base); /* The same will be available via buffered libevent interface */ ?> ]]></programlisting> &example.outputs.similar; <screen> <![CDATA[ int(3) int(0) string(8) "nop data" int(0) string(10) "mkdir data" ]]> </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 -->