ホームページ > 記事 > PHPフレームワーク > ワーカーマンとスウールの違いは何ですか
違い: 1. swoole は C 言語で実装されたソケット通信フレームワークですが、workerman は純粋な PHP で実装されたソケット フレームワークです; 2. workman では、ソケットはワーカー プロセスによって処理されるのに対し、swoole はワーカー プロセスによって処理されますメインプロセスによって実行され、その中のリアクタースレッドが責任を負います。
このチュートリアルの動作環境: Windows10 システム、Swoole4 バージョン、DELL G3 コンピューター
Workerman と swoole は、この段階では非常に物議を醸しています。時間があるときにお互いを知る必要があります。そうしないと、PHP サークルには参加できません。 Swoole は C 言語で実装されたソケット通信フレームワークであるのに対し、Workerman は純粋な PHP で実装されたソケット通信フレームワークであり、プロセス モデルにも多くの違いがあります。
マスター プロセス
このプロセスはより複雑であり、私の意見ではコア プロセスでもあります。これは、1 つのメイン スレッドを含む複数のスレッドを含むプロセスです。 n 個のリアクター スレッド (数は構成可能)。
その中で、メインスレッドは新しい接続を受け入れるために使用され、各リアクタースレッドが維持を担当する接続の数を評価し、それらを最小数のリアクタースレッドに割り当てて、リアクタースレッドの負荷を最大化します。各リアクタースレッドのバランスが取れています。
本質的に、ソケットが読み取り可能または書き込み可能になると、ソケットはリアクター スレッドによってワーカー プロセスまたはクライアントに送信されます。さらに、メイン スレッドは、リアクター スレッドがシグナルを受信したときに中断を避けるために、すべてのシグナルを引き継ぐ責任もあります。
より西洋風に言うと、マスター プロセスは、接続の受け入れとホスティング、およびソケットの読み取り可能性と書き込み可能性 (データの送信と受信) を担当します。本質的に、マスター プロセスは次のとおりです。 IOを担当します。リアクター スレッドは完全に非同期でノンブロッキングの作業メソッドであることにも注意してください。
マネージャー プロセス
マネージャー プロセスは、ワーカー プロセスとタスクワーカー プロセスのマザーです。よりおしゃれな言い方で言えば、マネージャー プロセスはワーカーをフォークします。プロセスとタスクワーカー プロセスは管理されなければならないため、マネージャー プロセスは、ワーカー プロセスとタスクワーカー プロセスのステータスの監視、予期せずハングアップした場合の新しいプロセスの再起動など、ワーカー プロセスとタスクワーカー プロセスのメンテナンス義務を負う必要があります (ゾンビ プロセスを回避し、スムーズに再起動します (これは伝説的なリロードです)。
ワーカー プロセス
ワーカー プロセスはマネージャー プロセスによってフォークされており、率直に言えば、このプロセスは作業を行っているだけです (公式で何度も言及されているビジネス コード)実際、通常コーディングされるのはカード ビジネス ロジック コードです。理解できますか?しかし、ワーカー プロセスのさらに興味深い点は、このプロセスが非同期または同期で動作できることです。意味が分からない場合は、まず覚えて慣れてから話しましょう。
タスクワーカー プロセス
タスクワーカー プロセス (以下、タスクワーカー プロセスと呼びます) は、本質的にはワーカー プロセスですが、特殊なワーカー プロセスです。ワーカー プロセスに時間と労力を要する操作がある場合は、まずそれをタスク作成者プロセスにスローし、他の作業を自分で行うことができます。タスク作成者が終了すると、ワーカー プロセスがそれらの操作を取得します。これは非常に便利です。ただし、タスク実行プロセスは同期モードでのみ動作し、非同期モードは使用できません。これが、タスク実行プロセスがタイマーを使用できないのに、ワーカー プロセスがタイマーを使用できる理由です。
これらのプロセスがどのように連携するかについての簡単な概要。率直に言うと、マスター プロセスは営業ジョブを受け取る責任がありますが、特定の作業はワーカー プロセスが実行します。ワーカー プロセスが一部のプロセスが多すぎて複雑すぎると感じた場合は、タスク実行プロセスにその作業を任せることができます。マネージャープロセスは、物流従事者プロセスとテイカープロセスの人事サポート部門であり、彼らの生と死、飲食と睡眠に責任を負います。
workerman
workerman のプロセス モデルは比較的単純です。まず、swoole と比較して、workerman には swoole にリアクター スレッドがありません。次に、workerman は通常のビジネスを処理するために使用されるワーカー プロセスとタスカー プロセス。 workman の場合、ソケットはワーカー プロセスによって処理されますが、swoole ではメイン プロセスのリアクター スレッドによって処理されます。データを受信した後、swoole は独自のワーカー プロセス (fpm プロセスに似ています) を通じてビジネスを処理できます。
workerman は、高性能 PHP ソケット サーバー フレームワークです。Workerman は、PHP マルチプロセスおよび libevent イベント ポーリング ライブラリに基づいています。PHP 開発者は、次のような 1 つまたは 2 つのインターフェイスを実装している限り、独自のネットワーク アプリケーションを開発できます。 Rpc サービス、チャット ルーム サーバー、モバイル ゲーム サーバーなどとして。
Workerman の目標は、PHP 開発者が PHP ソケットや PHP マルチプロセスの詳細を理解していなくても、高性能のソケットベースのアプリケーション サービスを簡単に開発できるようにすることです。 Workerman 自体は、PHP プロセス管理モジュールとソケット通信モジュールを備えた PHP マルチプロセス サーバー フレームワークであるため、php-fpm、nginx、apache などのコンテナに依存せずに独立して実行できます。 swoole チュートリアル
以上がワーカーマンとスウールの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。