workerman php チュートリアルの次のコラムでは、WorkerMan の機能を紹介します。困っている友人の役に立てば幸いです。
WorkerMan の機能
1. 純粋な 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 は PHP の組み込みの Select 関連のシステム コールを使用し、そのパフォーマンスも非常に強力です。
7. スムーズなサービス再起動のサポート
サービスを再起動する必要がある場合 (リリース バージョンなど)、ユーザーを処理しているプロセスは望ましくありません。要求をすぐに終了することはおろか、再起動した瞬間にクライアント通信が失敗する原因となります。 WorkerMan は、クライアントの使用に影響を与えることなく、スムーズなサービスのアップグレードを保証するスムーズな再起動機能を提供します。
8. ファイル更新の検出と自動読み込みのサポート
開発プロセス中、コードを変更したときに、それがすぐに反映されることを期待しています。結果を表示します。 WorkerMan は FileMonitor ファイル監視コンポーネントを提供しており、ファイルが更新されている限り、WorkerMan は自動的にリロードを実行して新しいファイルをロードし、有効にします。
9. 指定されたユーザーとして子プロセスの実行をサポート
子プロセスは実際にユーザーのリクエストを処理するプロセスであるため、セキュリティ上の理由から、子プロセスはユーザーのリクエストを実行することはできません。高い権限があるため、WorkerMan はサブ実行プロセスを実行するためのユーザーの設定をサポートし、サーバーの安全性を高めます。
10. 永続的に維持されるオブジェクトまたはリソースのサポート
WorkerMan は、実行プロセス中に PHP ファイルを 1 回だけロードして解析し、その後、ファイルはクラスや関数の宣言、PHP 実行環境、シンボル テーブルなどを作成するメモリは、繰り返し作成および破棄されることがありません。これは、Web コンテナーの下で実行される PHP メカニズムとはまったく異なります。
WorkerMan では、静的メンバーまたはグローバル変数は、プロセスのライフサイクル中、アクティブに破棄されることなく永続的に維持されます。つまり、オブジェクトや接続などのリソースがグローバル変数またはクラスの静的メンバーに配置されている場合、すべて現在のプロセスのライフサイクル全体のリクエストを再利用できます。 たとえば、データベース接続が 1 つのプロセスで 1 回初期化される限り、このプロセスの後続のすべてのリクエストはこのデータベース接続を再利用でき、TCP 3 ウェイ ハンドシェイク、データベース アクセス許可の検証、および接続中の切断を回避できます。頻繁なデータベース接続 TCP 4 ウェイ ハンドシェイク プロセスにより、アプリケーションの効率が大幅に向上します。11. 高いパフォーマンス
phpファイルはディスクから一度読み込まれて解析されるため、メモリ上に常駐し、次回使用する際には、メモリ内のオペコードが直接使用されるため、ディスク IO や PHP リクエストの初期化、実行環境の作成、字句解析、構文解析、オペコードのコンパイル、リクエストのクローズなど、多くの時間のかかるプロセスが大幅に削減されます。 nginx や apache などのコンテナに依存せず、PHP と通信するために nginx などのコンテナが必要ありません オーバーヘッドに関して最も重要なのは、リソースが永続的に維持され、初期化の必要がないことです毎回データベースに接続するため、WorkerMan を使用してアプリケーションを開発すると、非常に高いパフォーマンスが得られます。
12. HHVM のサポート
HHVM 仮想マシンでの実行をサポートし、PHP のパフォーマンスを 2 倍にすることができます。特にCPUを集中的に使用するコンピューティングビジネスにおいて、非常に優れたパフォーマンスを発揮します。実際のストレス テストの比較により、負荷のないビジネスの場合、HHVM で実行される WorkerMan のネットワーク スループットは、Zend PHP5.6 で実行される場合と比較して約 30 ~ 80% 向上しました。
Workerman 関連の技術記事の詳細については、Workerman チュートリアル 列にアクセスして学習してください。
以上がワーカーマンの特徴の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。