array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'en', ), 'this' => array ( 0 => 'function.eio-get-event-stream.php', 1 => 'eio_get_event_stream', ), 'up' => array ( 0 => 'ref.eio.php', 1 => 'Eio Functions', ), 'prev' => array ( 0 => 'function.eio-futime.php', 1 => 'eio_futime', ), 'next' => array ( 0 => 'function.eio-get-last-error.php', 1 => 'eio_get_last_error', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'en', 'path' => 'reference/eio/functions/eio-get-event-stream.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PECL eio >= 0.3.1b)
eio_get_event_stream — Get stream representing a variable used in internal communications with libeio
eio_get_event_stream() acquires stream representing a variable used in internal communications with libeio. Could be used to bind with some event loop provided by other PECL extension, for example libevent.
This function has no parameters.
eio_get_event_stream() returns stream on success;
otherwise, null
Example #1 Using eio with libevent
<?php
function my_eio_poll($fd, $events, $arg) {
/* Some libevent regulation might go here .. */
if (eio_nreqs()) {
eio_poll();
}
/* .. and here */
}
function my_res_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_res_cb", "nop data");
eio_mkdir("/tmp/abc-eio-temp", 0750, EIO_PRI_DEFAULT, "my_res_cb", "mkdir 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 */
?>
The above example will output something similar to:
int(3) int(0) string(8) "nop data" int(0) string(10) "mkdir data"