ホームページ  >  記事  >  PHPフレームワーク  >  スウールタイマーは単一プロセスですか?

スウールタイマーは単一プロセスですか?

(*-*)浩
(*-*)浩オリジナル
2019-12-12 13:41:562013ブラウズ

スウールタイマーは単一プロセスですか?

ミリ秒精度のタイマー。最下層は 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。