(PECL eio >= 0.3.1b)
eio_get_event_stream — 获取代表与 libeio 内部通信中使用的变量的流
eio_get_event_stream() 获取代表与 libeio 内部通信中使用的变量的流。可以用来绑定到其他 PECL 扩展提供的某个事件循环,例如 libevent。
此函数没有参数。
eio_get_event_stream() 在成功时返回流;否则,返回 null
示例 #1 使用 eio 与 libevent
<?php
function my_eio_poll($fd, $events, $arg) {
/* 这里可能会有某些 libevent 规则 .. */
if (eio_nreqs()) {
eio_poll();
}
/* .. 和这里 */
}
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");
/* 这里还有其他 eio_* 调用 ... */
// 设置事件标志
event_set($event, $fd, EV_READ /*| EV_PERSIST*/, "my_eio_poll", array($event, $base));
// 设置事件基底
event_base_set($event, $base);
// 启用事件
event_add($event);
// 启动事件循环
event_base_loop($base);
/* 通过缓存的 libevent 接口也能获得相同的结果 */
?>
上面的示例将输出类似于以下内容
int(3) int(0) string(8) "nop data" int(0) string(10) "mkdir data"