ホームページ >バックエンド開発 >PHPチュートリアル >PHP で swoole を使用する理由
私はここ 2 か月間 Swoole について勉強してきたので、この記事を参考にして、より多くの人に Swoole を知ってもらいたいと思っています。 Swoole は現在、一部の上級 PHP 者向けのおもちゃとして位置づけられているため、中級および低レベルのユーザーにとっては怖がり、一部のアプリケーション シナリオでは混乱する可能性もありますが、実際にはそれほど難しいものではありません。
Swoole の公式 Web サイトの自己紹介は「本番環境向け PHP 非同期ネットワーク通信エンジン」 まず、Swoole は Http、TCP、UDP、WebSocket をサポートするネットワーク アプリケーション開発ツールです。
Swoole と従来の PHP 開発の間には違いがあり、理解する必要がある概念もあります。現在の Swoole ベースのフレームワークを使用して開発する場合、開発習慣は従来の TP および LV フレームワークと似ています。
では、なぜ Swoole を使用するのでしょうか?
次の点があると思います。
メモリ内に常駐し、繰り返しの読み込みによるパフォーマンスの低下を回避し、大幅なパフォーマンスを向上させます。
コルーチンを非同期にし、同時処理を向上させます。 I/O 集中型のシナリオ (WeChat 開発、支払い、ログインなど) に対応する機能
#Http、WebSocket、TCP、UDP、その他のアプリケーションを簡単に開発し、ハードウェアと通信できるPHP 高パフォーマンスのマイクロサービス アーキテクチャが現実になりました常駐メモリ
現在、従来の PHP フレームワークは、各リクエストを処理する前にフレームワーク ファイルをロードして構成する必要があります。 . 動作します。これはパフォーマンスの問題の大きな原因になる可能性がありますが、Swoole では、一度ロードして何度も使用すると、そのような問題は発生しません。Coroutine
次の図に示すように、これは同じスレッドが同時リクエストを処理するシナリオです。たとえば、インターフェイスの 1 つが他の API を呼び出す必要があるなどです。大きなファイルの場合、従来の同期ブロッキングとコルーチン非同期の利点が反映されます。 Swoole コルーチンが I/O 集中型のシナリオに適している理由の詳細な説明コルーチンに関しては、まずプロセスとプロセスについて簡単に説明する必要があります。ご存知のとおり、プロセスは多くのリソースを消費するため、リクエストを処理するために多数のプロセスを作成しても、利益を得る価値はありません。マルチスレッド アプリケーションが多数あります。CPU レベルでは、複数のコアが複数のタスクを実行します。作成されるスレッドが多すぎると、スレッド スケジューリングが失われます。 コルーチンはシングルスレッドベースで実装されているため、I/O の待機中に CPU リソースを無駄にすることなく、CPU リソースの使用を最大限に活用できます。もちろん、コルーチンの数が増えると占有するメモリも増えますが、これは許容範囲であり、プロセスやスレッドに比べて占有されるリソースは比較的小さいです。 コルーチンを使用する場合、ファイルの読み取りと書き込み、インターフェイスの要求などのシナリオが発生すると、コルーチンは自動的に一時停止され、タスクを実行するために CPU が他のコルーチンに与えられます。スレッド CPU リソースの使用率無駄を削減し、パフォーマンスを向上させます。 コルーチン コード例:<?php use Swoole\Coroutine as co; // 协程 $time = microtime(true); // 创建10个协程 for($i = 0; $i < 10; ++$i) { // 创建协程 go(function() use($i){ co::sleep(1.0); // 模拟请求接口、读写文件等I/O echo $i, PHP_EOL; }); } swoole_event_wait(); echo 'co time:', microtime(true) - $time, ' s', PHP_EOL; // 同步 $time = microtime(true); // 创建10个协程 for($i = 0; $i < 10; ++$i) { sleep(1); // 模拟请求接口、读写文件等I/O echo $i, PHP_EOL; } echo 'sync time:', microtime(true) - $time, ' s', PHP_EOL;実行結果:
0 9 8 7 6 5 4 3 2 1 co time:1.0087130069733 s 0 1 2 3 4 5 6 7 8 9 sync time:10.010055065155 s上記の結果からわかるように、コルーチンの実行はシーケンシャルではなく、パフォーマンスが高くなります。現在のスレッドのタスク実行権限は他のコルーチンに引き継がれます。
HTTP サービスの作成
実際には、想像するほど難しくはありません。コードを見てください:$http = new swoole_http_server("127.0.0.1", 9501); $http->on('request', function ($request, $response) { $response->end("<h1>Hello Swoole. #".rand(1000, 9999)."</h1>"); }); $http->start();
Microservice
Tars は、Tencent が 2008 年から現在まで使用しているバックエンド ロジック層の統合アプリケーション フレームワーク TAF (Total Application Framework) であり、現在 C、Java、PHP、および Nodejs 言語をサポートしています。このフレームワークは、開発、運用と保守、テストを含むソリューションの完全なセットをユーザーに提供し、製品やサービスの迅速な開発、展開、テスト、オンライン化を支援します。スケーラブルなプロトコルのエンコードとデコード、高性能 RPC 通信フレームワーク、名前ルーティングと検出、リリース監視、ログ統計、構成管理などが統合されています。これにより、マイクロサービスを使用して安定した信頼性の高い独自の分散アプリケーションを迅速に構築でき、完全かつ効果的なサービスガバナンス。 間違いがあればぜひご指摘ください。Swooleはぜひみなさんにおすすめしたいです!以上がPHP で swoole を使用する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。