ホームページ > 記事 > PHPフレームワーク > スウールタイマーは単一プロセスですか?
ミリ秒精度のタイマー。最下層は epoll_wait と setitimer に基づいて実装されており、データ構造は最小限のヒープを使用するため、多数のタイマーの追加をサポートできます。
## 同期プロセスで使用して Setitimer とシグナル (Manager や TaskWorker プロセスなど) を実装します (推奨学習: SWOOLE ビデオ チュートリアル )
##非同期プロセスで epoll_wait/kevent/poll/select timeout を使用して実装するパフォーマンス
最下層は最小限のヒープ データ構造を使用して、タイマーを実装します。タイマーの追加と削除はすべてメモリ操作であるため、パフォーマンスは非常に高くなります。
公式ベンチマーク スクリプト https://github.com/swoole/swoole-src/blob/master/benchmark/timer.php では、100,000 回のランダムなタイマーの追加または削除にかかる時間は約0.08秒。
~/workspace/swoole/benchmark$ php timer.php add 100000 timer :0.091133117675781s del 100000 timer :0.084658145904541s
タイマーはメモリ操作であり、IO 消費はありません
違いタイマーは PHP 独自の pcntl_alarm とは異なります。 pcntl_alarm はクロック信号のティック関数に基づいて実装されており、いくつかの欠陥があります。
最大秒までしかサポートしませんが、タイマーはミリ秒レベルに達することができます
複数のタイマー プログラムの設定はサポートされていません。同時に
pcntl_alarm はdeclare(ticks = 1)に依存しており、パフォーマンスは非常に悪いです
以上がスウールタイマーは単一プロセスですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。