スウールはどのような問題を解決しましたか?

(*-*)浩
リリース: 2019-12-12 13:56:08
オリジナル
3171 人が閲覧しました

スウールはどのような問題を解決しましたか?

#php の既存のアプリケーション メソッドはすべて http に基づいており、高速なリアルタイム応答が必要な状況には比較的弱いです。たとえば、オンライン ゲームやプッシュ サービスは通常、ユーザーとの長期的なコミュニケーションを維持するため、リアルタイムの応答とプッシュ情報のための TCP 接続。

#swoole は、このようなアプリケーション シナリオを解決するように設計されています。 (推奨学習: SWOOLE ビデオ チュートリアル )

# Swoole の実現

Swoole は、他のサードパーティに依存せず、純粋な C で書かれています。 -party ライブラリ 。

swoole は libevent を使用しないため、libevent をインストールする必要はありません

swoole は PHP の stream/sockets/pcntl/posix/sysvmsg およびその他の拡張機能に依存しません

socket パート

swoole は、基礎となるソケット システム コールを使用します。

IO イベント ループ

メイン プロセスのイベント ループは select/poll を使用します。メイン スレッドには少数のファイル記述子しかないため、select/ を使用するだけです。 poll

リアクター スレッド/ワーカー プロセスで epoll/kqueue を使用します

タスク プロセスにはイベント ループがなく、プロセスは循環して読み取りパイプをブロックします

多くの人は strace -p を使用して swoole を表示します。メインプロセスは、poll システムコールのみを参照できます。正しい表示方法は strace -f -p

複数のプロセス/マルチスレッド

複数のプロセスは fork() システム コールを使用します

Multipleスレッドは pthread スレッド ライブラリを使用します。

EventFd

Swoole は、スレッド/プロセス間メッセージ通知のメカニズムとして、eventfd を使用します。

Timerfd

Swoole は timerfd を使用してタイマーを実装します

SIgnalfd

signalfd は swoole で使用されます信号のシールドと処理を実現します。これにより、スレッド/プロセスがシグナルによって中断されたり、システム呼び出しが再起動されたりする問題を効果的に回避できます。リアクター スレッドはメイン プロセスでシグナルを受け取りません。

以上がスウールはどのような問題を解決しましたか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート