(PECL ev >= 0.2.0)
Ev は静的クラスで、デフォルトのループへのアクセスや各種共通操作へのアクセスを提供します。
ループを作るときに渡すフラグ
Ev::FLAG_AUTO
      デフォルトのフラグの値。
Ev::FLAG_NOENV
      
        このフラグを使う (あるいは setuid や setgid でプログラムを実行する) と、
        libev は環境変数
        LIBEV_FLAGS を見ません。
        それ以外の場合 (デフォルト) は、
        LIBEV_FLAGS が見つかった場合は
        その内容でフラグを上書きします。パフォーマンステストやバグの調査のときに有用です。
       
Ev::FLAG_FORKCHECK
      
        libev が繰り返しのたびにフォークをチェックするようにします。毎回手動で
        EvLoop::fork() を呼ぶことがなくなります。
        これを実現するために、ループ内での繰り返しの旅に
        getpid() を呼んでいます。
        そのため、繰り返しの回数が増えるとイベントループがスローダウンするかもしれませんが、
        通常は気になるほどではありません。このフラグの設定を上書きしたり、
        環境変数 LIBEV_FLAGS で指定したりすることはできません。
       
Ev::FLAG_NOINOTIFY
      
        このフラグを指定すると、
        libev
        は » ev_stat
        ウォッチャーに
        inotify API を使わなくなります。
        このフラグは inotify ファイルディスクリプタを節約するのに便利です。
        これを使わなければ、ev_stat
        ウォッチャーを使ったループのたびに
        inotify
        ハンドルをひとつずつ消費することになります。
       
Ev::FLAG_SIGNALFD
      
        このフラグを指定すると、
        libev
        は
        » ev_signal
        (および
        » ev_child
        ) ウォッチャーに
        signalfd API を使おうとします。
        この API はシグナルを同期的に配送し、高速に処理したり
        キューに入ったシグナルデータを取得できるようにしたりします。
        また、スレッドを使ったときのシグナル処理も、
        スレッド内でシグナルが適切にブロックされている限りはシンプルになります。
        デフォルトでは signalfd を使いません。
       
Ev::FLAG_NOSIGMASK
      
        このフラグを指定すると、
        libev はシグナルのマスクを変更しないようにします。
        具体的には、シグナルが受信されるまではブロックしないようになるということです。
       
これは、自前のシグナル処理をするときに便利です。 また、特定のスレッドでだけシグナルを処理するという場合にも有用です。
Ev::run() あるいは EvLoop::run() に渡すフラグ
Ev::RUN_NOWAIT
      イベントループが新しいイベントを探し、 新しいイベントや未処理のイベントを処理するけれども、 もしイベントが見つからない場合は、最初のループですぐに呼び出し元に制御を戻します。 イベントを待つためにプロセスをブロックしたりはしません。 これは、時間のかかる計算をしているときのポーリングなどに便利です。 プログラムの動きを止めることなく新しいイベントを処理できます。
Ev::RUN_ONCE
      イベントループが (必要なら待ち続けてでも) 新しいイベントを探し、 その新しいイベントや未処理のイベントを処理します。 少なくとも一つのイベントがやってくるまで (libev 自身のイベント間隔になるでしょう。 そのため、ユーザー低位のコールバックが呼ばれる保証はありません) プロセスをブロックし ループ処理の終了後に呼び出し元に制御を戻します。
Ev::stop() あるいは EvLoop::stop() に渡すフラグ
Ev::BREAK_CANCEL
      ブレーク操作をキャンセルします。
Ev::BREAK_ONE
      一番内側の Ev::run() (あるいは EvLoop::run() ) の呼び出しを返します。
Ev::BREAK_ALL
      ネストしたすべての Ev::run() (あるいは EvLoop::run() ) の呼び出しを返します。
ウォッチャーの優先度
Ev::MINPRI
      最小の優先度。
Ev::MAXPRI
      最大の優先度。
受信したイベントのビットマスク
Ev::READ
      EvIo ウォッチャーが読み込み可能になったときのファイルディスクリプタ。
Ev::WRITE
      EvIo ウォッチャーが書き込み可能になったときのファイルディスクリプタ。
Ev::TIMER
      EvTimer ウォッチャーがタイムアウトしました。
Ev::PERIODIC
      EvPeriodic ウォッチャーがタイムアウトしました。
Ev::SIGNAL
      EvSignal::__construct() のコンストラクタで指定したシグナルを受信しました。
Ev::CHILD
      
        EvChild::__construct()
        のコンストラクタで指定した
        pid
        が、状態の変更を受信しました。
       
Ev::STAT
      EvStat ウォッチャーで指定したパスが、その属性を変更しました。
Ev::IDLE
      他のウォッチャーが何もすることがなくなったときに、 EvIdle ウォッチャーが動作します。
Ev::PREPARE
      すべての EvPrepare ウォッチャーが、 Ev::run() の開始前に起動しました。つまり、 イベントループがスリープしたり新しいイベントのポーリングをしたりする直前に EvPrepare ウォッチャーが起動するということになります。
Ev::CHECK
      すべての EvCheck ウォッチャーが、 Ev::run() が新しいイベントをとりまとめた直後 (ただし受信したイベントのコールバックをキューに入れる前) にキューに入ります。つまり、 イベントループ内で優先度が同じ (あるいはより低い) ウォッチャーより前に EvCheck ウォッチャーが起動するということになります。
Ev::EMBED
      EvEmbed で指定した埋め込みイベントループのウォッチャーが注目する必要があります。
Ev::CUSTOM
      
        まだ
        libev
        で送信したりそれ以外の使いかたをしたりはしていませんが、
        libev
        ユーザーが (EvWatcher::feed() などで)
        ウォッチャーに通知するために使えます。
       
Ev::ERROR
      
        指定されていないエラーが発生し、ウォッチャーが停止しました。
        これが発生する原因として考えられるのは、
        libev がメモリ不足でウォッチャーをきちんと開始できなかった場合や
        ファイルディスクリプタが閉じてしまった場合などがあります。
        libev は、これらに関してはアプリケーションのバグとみなします。
        詳細は
        » ANATOMY
    OF A WATCHER
        を参照ください。
       
バックエンドのフラグ
Ev::BACKEND_SELECT
      
        select(2) バックエンド
       
Ev::BACKEND_POLL
      
        poll(2) バックエンド
       
Ev::BACKEND_EPOLL
      
        Linux 限定の
        epoll(7)
        バックエンド。2.6.9 以前のカーネルでもそれ以降のカーネルでも使えます。
       
Ev::BACKEND_KQUEUE
      
        kqueue
        バックエンド。大半の BSD システムで利用します。
        EvEmbed ウォッチャーを使って、
        kqueue バックエンドのループを別のループに埋め込むことができます。
        たとえば、
        kqueue バックエンドのループを作って、
        それをソケットに対してだけ使うこともできます。
       
Ev::BACKEND_DEVPOLL
      Solaris 8 バックエンド。現時点では未実装です。
Ev::BACKEND_PORT
      Solaris 10 のイベントポート機構で、規模が大きくなっても対応できます。
Ev::BACKEND_ALL
      
        壊れているものも含めて、すべてのバックエンドを試します。
        これを明示的に使うことは推奨しません。ビット演算子を使って、
        Ev::BACKEND_ALL
        & ~
        Ev::BACKEND_KQUEUE
        のようにするか、
        Ev::recommendedBackends()
        を使うか、あるいは何もバックエンドを指定しないようにしましょう。
       
Ev::BACKEND_MASK
      
        これはバックエンドではなく、
        flags の中のすべてのバックエンドビットをマスクするものです。
        たとえば、環境変数
        LIBEV_FLAGS
        を変更するときに使います。
       
注意:
デフォルトのループの場合は、モジュールの初期化時に
Evが (もし使えれば)pthread_atforkを使って » ev_loop_fork の呼び出しを登録します。
注意:
Ev クラスには、 デフォルトのイベントループ にアクセスするメソッドが用意されています (Ev::iteration() や Ev::depth() など)。 カスタムループ (EvLoop::__construct() で作ったもの) の場合、これらの値にアクセスするには EvLoop クラスのプロパティやメソッドを使います。
デフォルトのイベントループ自体のインスタンスを取得するには EvLoop::defaultLoop() メソッドを使います。
