序文

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のいくつかのアプリケーション分野は以下の通りです:

  1. インスタントメッセージング
    例えば、ウェブ即時チャット、即時メッセージプッシュ、WeChatミニプログラム、モバイルアプリメッセージプッシュ、PCソフトウェアメッセージプッシュなど
    [例 workerman-chatチャットルームウェブメッセージプッシュ小蝌蚪チャットルーム]

  2. IoT関連
    例えば、Workermanとプリンターの通信、マイコンとの通信、スマートバンド、スマートホーム、シェアサイクルなど。
    [顧客事例:易聯云、易泊時代など]

  3. ゲームサーバー
    例えば、ボードゲームサーバー、MMORPGゲームなど。[例 browserquest-php]

  4. HTTPサービス
    例えば、高性能HTTPインターフェイス、高性能ウェブサイトを作成する。HTTP関連のサービスやサイトを作成する場合は、強くwebmanを推奨します。

  5. SOAサービス化
    Workermanを利用して既存の業務のさまざまな機能ユニットをカプセル化し、サービスの形で統一インターフェースを提供し、システムを緩結合、メンテナンスの容易さ、高可用性、容易なスケールを達成します。[例 workerman-json-rpcworkerman-thrift]

  6. その他のサーバーソフトウェア
    例えば、GatewayWorkerPHPSocket.IOhttpプロキシsock5プロキシ分散通信コンポーネント分散変数共有コンポーネントメッセージキュー、DNSサーバー、Webサーバー、CDNサーバー、FTPサーバーなど

  7. コンポーネント
    例えば、非同期redis非同期httpクライアント、IoT mqttクライアント](components/workerman-mqtt.html)、メッセージキュー workerman/redis-queueworkerman/stompworkerman/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は任意のプロトコルを使用する任意のプラットフォームのクライアントと通信できます。ユーザーがクライアントを開発する際は、対応する通信プロトコルに基づいてサーバーとの通信を完了できます。