Workerman は、オープンソースの高性能非同期 PHP ソケット インスタント メッセージング フレームワークです。この記事ではワーカーマンの特徴をいくつか紹介しますので、皆様のお役に立てれば幸いです。
関連する推奨事項: 「workerman チュートリアル 」
WorkerMan の機能の紹介:
1. Pure PHP 開発
WorkerMan を使用して開発されたアプリケーションは、php-fpm、apache、nginx などのコンテナに依存せずに独立して実行できます。これにより、PHP 開発者はアプリケーションを開発、展開、デバッグするのが非常に便利になります。
2. PHP マルチプロセスのサポート
サーバーのマルチ CPU のパフォーマンスを最大限に活用するために、WorkerMan はデフォルトでマルチプロセスとマルチタスクをサポートします。 WorkerMan は、外部サービスを提供するためにメイン プロセスと複数のサブプロセスを起動します。メイン プロセスはサブプロセスの監視を担当します。サブプロセスは独立してネットワーク接続を監視し、データの受信、送信、処理を行います。シンプルなプロセス モデルにより、 WorkerMan はより安定しており、効率的です。
3. TCP と UDP をサポート
WorkerMan は、TCP と UDP という 2 つの伝送プロトコルをサポートしています。トランスポート層プロトコルを変更するには 1 つの属性を変更するだけで済み、ビジネス コードは変更する必要がありません。変えられる。
4. 長時間接続のサポート
多くの場合、PHP アプリケーションはチャット ルーム、ゲームなどのクライアントとの長時間接続を維持する必要がありますが、従来の PHP コンテナー (Apache、nginx、php- fpm)は難しいです。
WorkerMan を使用すると、サーバー ビジネスが積極的にクローズ接続インターフェイスを呼び出さない限り、PHP のロング接続を使用できます。単一の WorkerMan プロセスは数万の同時接続をサポートでき、複数のプロセスは数十万、さらには数百万の同時接続をサポートできます。
5. さまざまなアプリケーション層プロトコルのサポート
WorkerMan インターフェイスは、カスタム プロトコルを含むさまざまなアプリケーション層プロトコルをサポートします。 WorkerMan でのプロトコルの変更も非常に簡単です。フィールドを設定するだけで、ビジネス コードを変更することなく、プロトコルが自動的に切り替わります。クライアントのさまざまなニーズを満たすために、異なるプロトコルで複数のポートを開くこともできます。
6. 高い同時実行性をサポートします。
WorkerMan は、Libevent イベント ポーリング ライブラリをサポートします (Libevent 拡張機能をインストールする必要があります)。Libevent を使用すると、高い同時実行性で優れたパフォーマンスが得られます。Libevent がインストールされていない場合は、PHP を使用してくださいSelect 関連のシステム コールが組み込まれており、パフォーマンスも非常に強力です。
7. スムーズなサービスの再起動のサポート
サービスを再起動する必要がある場合 (バージョンのリリースなど)、ユーザーのリクエストを処理しているプロセスをすぐに終了する必要はありません。再起動の瞬間だけクライアント通信に失敗しました。
WorkerMan は、クライアントの使用に影響を与えることなくサービスをスムーズにアップグレードできるスムーズな再起動機能を提供します。
8. ファイル更新の検出と自動読み込みのサポート
開発プロセス中、コードを変更した後、その変更がすぐに反映され、結果を確認できることが望まれます。 WorkerMan は FileMonitor ファイル監視コンポーネントを提供しており、ファイルが更新されている限り、WorkerMan は自動的にリロードを実行して新しいファイルをロードし、有効にします。
9. 指定されたユーザーとしてのサブプロセスの実行をサポート
サブプロセスはユーザーのリクエストを実際に処理するプロセスであるため、セキュリティ上の理由から、サブプロセスには高すぎる権限を与えることはできません。 WorkerMan はサブプロセスの設定をサポートしており、実行プロセスは同じユーザーとして実行されるため、サーバーの安全性が高まります。
10. 永続的に維持されるオブジェクトまたはリソースのサポート
WorkerMan は、実行プロセス中に PHP ファイルを 1 回だけロードして解析し、その後、ファイルはメモリ内に常駐します。関数宣言、PHP実行環境、シンボルテーブルなどは繰り返し作成・破棄されることはなく、Webコンテナ上で動作するPHPの仕組みとは全く異なります。
WorkerMan では、静的メンバーまたはグローバル変数は、プロセスのライフサイクル中、アクティブに破棄されることなく永続的に維持されます。つまり、オブジェクトや接続などのリソースがグローバル変数またはクラスの静的メンバーに配置されている場合、すべて現在のプロセスのライフサイクル全体のリクエストを再利用できます。
たとえば、データベース接続が 1 つのプロセスで 1 回初期化される限り、このプロセスの後続のすべてのリクエストはこのデータベース接続を再利用できるため、TCP スリーウェイ ハンドシェイク、データベース権限の検証、および接続中の切断が回避されます。頻繁なデータベース接続 TCP 4 ウェイ ハンドシェイク プロセスにより、アプリケーションの効率が大幅に向上します。
11. 高パフォーマンス
PHP ファイルはディスクから一度読み込まれて解析されるため、メモリ上に常駐し、次回使用されるときにメモリ内のオペコードが実行されます。直接使用できるため、ディスク IO が大幅に削減され、リクエストの初期化、実行環境の作成、字句解析、構文解析、オペコードのコンパイル、リクエストのクローズなど、PHP の多くの時間のかかるプロセスがコンテナに依存しません。 nginxやapacheなど、nginxと他のコンテナやPHP間の通信のオーバーヘッドが軽減されます 最も重要なことは、リソースを永続的に維持でき、毎回データベース接続を初期化する必要がないため、WorkerManを使用して開発することですアプリケーションは非常に高いパフォーマンスを発揮します。
12. HHVM のサポート
HHVM 仮想マシンでの実行をサポートし、PHP のパフォーマンスを 2 倍にすることができます。特にCPUを集中的に使用するコンピューティングビジネスにおいて、非常に優れたパフォーマンスを発揮します。実際のストレス テストの比較により、負荷のないビジネスの場合、HHVM で実行される WorkerMan のネットワーク スループットは、Zend PHP5.6
参考資料
http で実行される場合よりも約 30 ~ 80% 高くなります。 ://doc.workerman.net/principle.html
元のリンク: https://blog.csdn.net/u012164509/article/details/90749646
ワーカーマンの詳細については、PHP 中国語 Web サイト ワーカーマン フレームワーク のチュートリアル欄に注目してください。
以上がWorkerMan の機能の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。