序文
Workerman、高性能PHPアプリケーションコンテナ
Workermanとは?
Workermanは、純粋なPHPで開発されたオープンソースの高性能PHPアプリケーションコンテナです。
Workermanは車輪を再発明するものではなく、MVCフレームワークではなく、より低レベルで汎用的なサービスフレームワークです。これを使用してtcpプロキシ、梯子プロキシ、ゲームサーバー、メールサーバー、ftpサーバー、さらにはphpバージョンのredis、phpバージョンのデータベース、phpバージョンのnginx、phpバージョンのphp-fpmなどを開発できます。WorkermanはPHPの分野における革新と言え、開発者はPHPがウェブだけに限られているという束縛から完全に解放されます。
実際、WorkermanはPHPバージョンのnginxに似ており、コアはマルチプロセス+Epoll+非ブロッキングIOです。Workermanの各プロセスは数万の同時接続を維持できます。常駐メモリで、Apache、nginx、php-fpmといったコンテナに依存せず、超高性能を持っています。同時に、TCP、UDP、UNIXSOCKETをサポートし、長接続をサポートし、Websocket、HTTP、WSS、HTTPSなどの通信プロトコルやさまざまなカスタムプロトコルをサポートしています。タイマー、非同期ソケットクライアント、非同期Redis、非同期Http、非同期メッセージキューなど、多くの高性能コンポーネントを持っています。
Workermanのいくつかのアプリケーション分野
Workermanは伝統的なMVCフレームワークとは異なり、WorkermanはWeb開発だけでなく、さらに広範なアプリケーション分野にも使用できるため、例えば、インスタントメッセージング、IoT、ゲーム、サービスガバナンス、その他のサーバーやミドルウェアなどがあります。これは間違いなくPHP開発者の視野を大きく広げます。現在、これらの分野でのPHP開発者は非常に不足しており、PHP分野で技術的な優位性を持ちたい場合、毎日のCRUD作業に満足せず、アーキテクトまたは技術者の方向に進みたい場合、Workermanは非常に学ぶ価値のあるフレームワークです。開発者には、Workermanを使うだけでなく、基づいて自身のオープンソースプロジェクトを開発し、スキルを向上させて自分の影響力を増すことをお勧めします。たとえば、Beanbunマルチプロセスネットワーククローラーフレームワークはその良い例であり、最近オンラインになったばかりで、多くの好評価を得ています。
Workermanのいくつかのアプリケーション分野は以下の通りです:
-
インスタントメッセージング
例えば、ウェブ即時チャット、即時メッセージプッシュ、WeChatミニプログラム、モバイルアプリメッセージプッシュ、PCソフトウェアメッセージプッシュなど
[例 workerman-chatチャットルーム、ウェブメッセージプッシュ、小蝌蚪チャットルーム] -
IoT関連
例えば、Workermanとプリンターの通信、マイコンとの通信、スマートバンド、スマートホーム、シェアサイクルなど。
[顧客事例:易聯云、易泊時代など] -
ゲームサーバー
例えば、ボードゲームサーバー、MMORPGゲームなど。[例 browserquest-php] -
HTTPサービス
例えば、高性能HTTPインターフェイス、高性能ウェブサイトを作成する。HTTP関連のサービスやサイトを作成する場合は、強くwebmanを推奨します。 -
SOAサービス化
Workermanを利用して既存の業務のさまざまな機能ユニットをカプセル化し、サービスの形で統一インターフェースを提供し、システムを緩結合、メンテナンスの容易さ、高可用性、容易なスケールを達成します。[例 workerman-json-rpc、workerman-thrift] -
その他のサーバーソフトウェア
例えば、GatewayWorker、PHPSocket.IO、httpプロキシ、sock5プロキシ、分散通信コンポーネント、分散変数共有コンポーネント、メッセージキュー、DNSサーバー、Webサーバー、CDNサーバー、FTPサーバーなど -
コンポーネント
例えば、非同期redis、非同期httpクライアント、IoT mqttクライアント](components/workerman-mqtt.html)、メッセージキュー workerman/redis-queue、 workerman/stomp、workerman/rabbitmq、ファイル監視コンポーネント、さらには多くのサードパーティによって開発されたコンポーネントフレームワークなど
明らかに、従来のMVCフレームワークでは上記の機能を実現するのは難しいため、Workermanが誕生する理由となっています。
Workermanの理念
極めてシンプル、安定、高性能、分散。
極めてシンプル
小さいことは美しい。Workermanのコアは非常にシンプルで、数個のPHPファイルしかなく、いくつかのインターフェースしか公開されていないため、学ぶのが非常に簡単です。他のすべての機能はコンポーネントの形で拡張できます。
Workermanは、完璧なドキュメント+権威ある公式サイト+活発なコミュニティ+数個の千人規模のQQグループ+多数の高性能コンポーネント+多くの例を持っており、これらすべてが開発者にとって使いやすくしています。
安定
Workermanは数年間オープンソースとして利用されており、多くの上場企業によって大規模に使用されているため、非常に安定しています。あるサービスは2年以上再起動せずに動き続けています。coredumpなし、メモリリークなし、バグなし。
高性能
Workermanは常駐メモリであり、Apache/nginx/php-fpmに依存しておらず、コンテナからPHPへの通信コストがなく、各リクエストを初期化してすべてを破棄するコストもなく、超高性能を誇ります。従来のMVCフレームワークと比較して、性能は数十倍も高く、PHP7環境でab圧力テストのQPSは単独のnginxを上回ることさえあります。
分散
もう一人で戦う時代ではなく、単一のサーバーの性能がどれだけ優れていても限界があります。分散されたマルチサーバー展開が王道です。Workermanは直接、長接続の分散通信ソリューションであるGatewayWorkerフレームワークを提供します。サーバーを追加するには、簡単な設定を行い、起動するだけで済み、業務コードは変更不要で、システムの耐障害能力は倍増します。もしTCPの長接続アプリケーションを開発しているなら、GatewayWorkerを直接使用することをお勧めします。これはWorkermanのラッパーであり、長接続アプリケーションに豊富なインターフェースと強力な分散処理能力を提供します。
本マニュアルの適用範囲
Workerman 3.x - 5.xバージョン
Windowsユーザー(必読)
Workermanは、LinuxシステムとWindowsシステムの両方をサポートしています。WindowsバージョンのWorkermanはどの拡張にも依存せず、PHP環境変数を適切に設定すればいいだけです。WindowsバージョンのWorkermanのインストールおよび注意事項については、Windowsユーザー必見を参照してください。
クライアント
Workermanの通信プロトコルはオープンでカスタマイズ可能であるため、理論的にはWorkermanは任意のプロトコルを使用する任意のプラットフォームのクライアントと通信できます。ユーザーがクライアントを開発する際は、対応する通信プロトコルに基づいてサーバーとの通信を完了できます。