例1 基本 API による STDIN のポーリング
<?php
function print_line($fd, $events, $arg)
{
static $max_requests = 0;
$max_requests++;
if ($max_requests == 10) {
// 10 回書き込んだらループを抜けます
event_base_loopexit($arg[1]);
}
// 行を表示します
echo fgets($fd);
}
// ベースとイベントを作成します
$base = event_base_new();
$event = event_new();
$fd = STDIN;
// イベントフラグを設定します
event_set($event, $fd, EV_READ | EV_PERSIST, "print_line", array($event, $base));
// イベントベースを設定します
event_base_set($event, $base);
// イベントを有効にします
event_add($event);
// イベントループを開始します
event_base_loop($base);
?>
例2 バッファイベント API による STDIN のポーリング
<?php
function print_line($buf, $arg)
{
static $max_requests;
$max_requests++;
if ($max_requests == 10) {
event_base_loopexit($arg);
}
// 行を表示します
echo event_buffer_read($buf, 4096);
}
function error_func($buf, $what, $arg)
{
// エラーを処理します
}
$base = event_base_new();
$eb = event_buffer_new(STDIN, "print_line", NULL, "error_func", $base);
event_buffer_base_set($eb, $base);
event_buffer_enable($eb, EV_READ);
event_base_loop($base);
?>