ev は、C で書かれた高性能のフル機能のイベント ループである libev ライブラリへのインターフェイスを提供する PECL 拡張機能です。
リブブについて
Libev はイベント ループです。特定のイベント (ファイル記述子が読み取れる、タイムアウトが発生するなど) に関心を登録すると、これらのイベント ソースを管理し、プログラムにイベントを提供します。
では、libev とは何ですか? 以下はインターネットからの抜粋です:
libev は、高性能イベント ループ/イベント モデル ネットワーキング ライブラリであり、多くの新機能が含まれています。
これは、lievent および Event Perl モジュールの後の新しいネットワーク ライブラリのセットです。追求する目標は、より高速な速度、より少ないバグ、より多くの機能、より小さなサイズです。 www.2cto.com
これは libevent に非常に似ており、作者の紹介によると、libevent の代替として使用でき、より高いパフォーマンスを提供できます。複雑な設定は必要ありません。
これは前述の libevent と密接に関連しているようですが、この拡張機能の作成者は明らかにより積極的で、1 週間以内に 3 つのバージョンを提出しています。
コード例
タイマーの使い方
//タイマーを作成し、2秒後にトリガーします
$w1 = new EvTimer(2, 0, function () {
echo "2 秒経過しました";
});
//タイマーを作成し、2 秒後にトリガーし、1 秒ごとに繰り返します
// 手動で停止するまで
$w2 = new EvTimer(2, 1, function ($w) {
echo "毎秒呼び出され、2 秒後に起動されますn";
echo "iteration = "、Ev::iteration()、PHP_EOL;
// 5 回の反復後にウォッチャーを停止します
Ev::iteration() == 5 および $w->stop();
// さらに呼び出しにより 10 回を超える反復が発生した場合はウォッチャーを停止します
Ev::iteration() >= 10 および $w->stop();
});
//停止タイマーを作成します。手動で開始した場合にのみ有効です
$w_stopped = EvTimer::createStopped(10, 5, function($w) {
echo "stoppedn として作成されたタイマーのコールバック";
// 2 回の反復後にウォッチャーを停止します
Ev::iteration() >= 2 および $w->stop();
});
// Ev::stop() が呼び出されるか、すべてのウォッチャーが停止するまでループします
Ev::run();
// 起動して動作するか確認してください
$w_stopped->start();
echo "単一の反復を実行";
Ev::run(Ev::RUN_ONCE);
echo "2 番目のウォッチャーを再起動し、同じイベントの処理を試みますが、ブロックしないでください";
$w2->また();
Ev::run(Ev::RUN_NOWAIT);
$w = 新しい EvTimer(10, 0, function() {});
echo "ブロッキングループンを実行しています";
Ev::run();
エコー「ENDn」;
?>
出力内容
2秒経過
毎秒呼び出され、2秒後に起動されます
反復 = 1
毎秒呼び出され、2秒後に起動されます
反復 = 2
毎秒呼び出され、2秒後に起動されます
反復 = 3
毎秒呼び出され、2秒後に起動されます
反復 = 4
毎秒呼び出され、2秒後に起動されます
反復 = 5
単一の反復を実行する
停止として作成されたタイマーのコールバック
2 番目のウォッチャーを再起動し、同じイベントの処理を試みますが、ブロックしないでください
ブロッキングループの実行
毎秒呼び出され、2秒後に起動されます
反復 = 8
毎秒呼び出され、2秒後に起動されます
反復 = 9
毎秒呼び出され、2秒後に起動されます
反復 = 10
終了
I/O イベント
例1