swoole の利点: 1. 複数の Web ワーカーと個別のタスク ワーカーにより、コードを遅延させることができます; 2. コルーチンのサポート; 3. 他の Web サーバーをインストールする必要はありません; 4. リクエストの制限を増やすことができます。
このチュートリアルの動作環境: Windows10 システム、Swoole4 バージョン、DELL G3 コンピューター
Swoole とは何ですか?
Swoole は、コルーチンに基づく非同期 PHP プログラミング フレームワークです。
これは主に、中国市場をターゲットとした大規模アプリケーションに取り組んでいる中国の開発者によって開発されています。そのため、トラフィックの多い運用環境でストレス テストと検証が行われています。これは絶対に信頼できるテクノロジーであり、取り組むのが楽しいです。
Swoole の利点
Swoole には、複数の Web ワーカーと個別のタスク ワーカー、コルーチンのサポート、表示機能など、多くの利点があります。リクエスト制限を増やします。
複数の Web ワーカーのサポート
個別のタスク ワーカーのサポート
コルーチンのサポート
Web サーバーは不要
前述したように、Swoole には複数の Web ワーカーと個別のタスク ワーカーがあり、コードを遅延させることができます。長時間実行プロセスを遅延すると、応答が送信されるまで処理を延期するなど、API やアプリケーションで以前は実現できなかった多くのメソッドが利用できるようになります。
コルーチンのサポートSwoole のコルーチン サポートは、コストのかかる I/O (データベースとの通信、ファイル システムの使用、コマンドの発行など) を大量に実行している場合でも、 HTTP リクエスト)、多くのリクエストを処理することもできます。
Bootstrap は 1 回だけロードされるため、リクエストごとに 15% ~ 25% の税金を支払う必要はありません。これは初期化の一部であるため、各リクエストで使用する RAM や CPU などのリソースが少なくなります。一部のアプリケーションでは、これは必要なサーバーが少なくなることを意味する場合がありますが、これはすでに非同期ランタイムが原因である可能性があります。
追加の Web サーバーは必要ありませんサーバーの数が少ないと言えば、Swoole は Web サーバーであるため、Web サーバーは必要ありません。 PHP のみをインストールし、その前に NGINX をインストールする必要のない Docker コンテナを起動できます。
NGINX や Apache を同じコンテナ内に記述する必要はなく、PHP だけでも構いません。そして、何らかのコンテナ化を行う場合、これらの単一プロセス コンテナをすべて 1 つの言語で使用することが、まさにゴールド スタンダードです。
より高い要件の上限興味深いことに、Zend Framework および Laminas コミュニティのメンバーは、非同期サーバーは標準セットアップで達成できる 4 つのリクエストを処理できると考えています。 7回。
もちろん、Apache と NGINX を非常に高速になるように調整することはできますが、非同期サーバーを使用するとさらに高速な速度を得ることができ、Node は何度もそれを証明しています。
欠点上記の特典は PHP アプリケーションに大きなメリットをもたらしますが、Swoole には明らかな欠点がまだいくつかあります。
これらの欠点には以下が含まれます:
残念ながら、コードをリロードする機能は Swoole にはありません。それは長時間実行されるプロセスだからです。したがって、更新すると、変更前と同じコードが使用されます。
Swoole にはホットコードのリロード機能がいくつかありますが、現時点では、実際のサーバー インスタンス (アプリケーション インスタンス、DI コンテナ、構成など) 自体を起動するために必要なものをリロードする方法はありません。デバッグ
Swoole のコルーチン サポートは Xdebug および Xhprof と互換性がないため、デバッグは困難になる可能性があります。ログ記録に慣れる必要があります。Response "end" メソッド
Swoole では、「$response->end()」を呼び出すのを忘れると、A ネットワークまで接続が開いたままになります。タイムアウトが発生しました。これは、現在のプロセスが開いたままであること、つまりイベント ループが存在しないことを意味します。最終的にはタイムアウトが発生し、タイムアウトが取得されますが、タイムアウトは依然として問題です。したがって、そこから抽象化できれば、頭痛の種を避けることができます。 (この関数は、Swoole が応答の完了を認識し、ワーカーを解放して別のリクエストを処理できるようにするために必要です。ただし、ユーザーの観点から見ると、この関数を呼び出すのを忘れやすいため、これは問題です。)
つまり、これは Swoole ランタイムの非常に便利で便利な機能ですが、独自のコードでこれを実行することは避けた方がよいでしょう。非標準のリクエスト/レスポンス API
「$response->end()」メソッドは、Swoole の非標準リクエスト/レスポンス API の例です。 PSR-7 仕様 (PHP の HTTP メッセージング インターフェイス) にも準拠しておらず、Symfony の HTTPKernel や laminas-http などのフレームワーク実装にも準拠していません。
したがって、Swoole を直接書いていても独自のフレームワークを使用したい場合は、適応させる必要がありますが、これが問題になる可能性があります。
推奨学習: swoole チュートリアル
以上がスウールの利点は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。