ホームページ >PHPフレームワーク >ThinkPHP >RPC サービスと TP6 Think-Swoole によって構築された Web サービス間の相互運用性
TP6 RPC サービスと Think-Swoole によって構築された Web サービス間の相互運用性
インターネットの発展に伴い、分散システムの構築を必要とするアプリケーション要件がますます増えています。分散システムを構築する場合、RPC (リモート プロシージャ コール) は、異なるサービス ノード間でのリモート呼び出しを可能にする重要な通信メカニズムです。
開発では、アプリケーションの基本フレームワークとして ThinkPHP を使用することがよくありますが、Swoole は非常に優れた PHP 非同期および同時実行フレームワークです。これら 2 つのフレームワークを組み合わせることで、高パフォーマンスの RPC サービスを適切に構築できます。
この記事では、TP6 Think-Swoole を使用して RPC サービスを構築し、Web サービスとの相互運用性を実現する方法を紹介します。
最初のステップでは、まず ThinkPHP6 と Swoole をインストールする必要があります。 Composer経由でインストール可能。コマンドラインに次のコマンドを入力します:
composer create-project topthink/think composer require swoole/swoole
インストールが完了したら、ThinkPHP6 と Swoole を構成する必要があります。プロジェクトのルート ディレクトリで、.env
ファイルを見つけて、構成情報を編集します。
APP_NAMESPACE=app APP_DEBUG=false [SERVER] SERVER_SOFTWARE=swoole-http-server SERVER_PORT=9501 SERVER_HOST=0.0.0.0
上記の構成では、サーバーのポート番号を 9501 に指定し、リスニング アドレスを指定しました。これは 0.0.0.0 で、実際のニーズに応じて変更できます。
次に、RPC コントローラーを作成する必要があります。 ThinkPHP6 では、コントローラーは app
ディレクトリーの controller
フォルダーにあります。 RpcController
という名前のコントローラーを作成し、RPC リクエストを処理するための hello
という名前のメソッドを追加します。
app/controller
ディレクトリに RpcController
という名前の PHP ファイルを作成し、次のコードを追加します。
<?php namespace appcontroller; class RpcController { public function hello($name) { return "Hello, " . $name . "!"; } }
上記のコードでは、次のように定義します。 hello
というメソッドは、$name
パラメータを受け取り、挨拶を含む文字列を返します。
次に、Swoole サーバー スクリプトに RPC サービスのサポートを追加する必要があります。インスタンス化の前に、public/index.php
ファイルを変更し、次のコードを thinkApp
に追加する必要があります。
use SwooleCoroutineScheduler; use thinkswooleServer; // 创建一个Swoole服务器实例 $server = new Server('0.0.0.0', '9501'); // 添加对RpcController的支持 $server->set([ 'handle_rpc' => function ($server, $fd, $fromId, $data) { $scheduler = new Scheduler; $scheduler->add(function () use ($server, $fd, $fromId, $data) { $result = app('rpc')->run($data); $server->send($fd, $result); }); $scheduler->start(); }, ]); // 启动服务器 $server->start();
上記のコードでは、## を作成します。 # swoole hinkServer インスタンスを作成し、
set メソッドを使用して RPC コントローラーのサポートを追加します。上記のコードでは、
handle_rpc メソッドを使用して RPC リクエストを処理し、
app('rpc')->run($data) を通じて
RpcController## を呼び出します #メソッドを実行し、結果をクライアントに返します。 この時点で、RPC サービスの構築が完了しました。以下でテストしてみましょう。
まず、コマンド ラインで次のコマンドを実行して Swoole サーバーを起動します:
php think swoole:start
次に、新しいターミナルを開き、curl コマンドを使用して RPC リクエストを送信します:
curl 127.0.0.1:9501 -d '{"jsonrpc": "2.0", "method": "hello", "params": ["Alice"], "id": 1}'
すべてがうまくいけば、ターミナルに返された結果が表示されます。
{"jsonrpc":"2.0","result":"Hello, Alice!","id":1}
この時点で、TP6 Think-Swoole に基づく RPC サービスの構築に成功し、Web サービスとの相互運用性を実現しました。
この記事では、ThinkPHP6 と Swoole を使用して、RPC ベースのサービスを構築し、Web サービスとの相互運用性を実現しました。このようにして、アプリケーションをより柔軟かつ効率的にすることができます。この記事が皆様のお役に立てれば幸いです。
以上がRPC サービスと TP6 Think-Swoole によって構築された Web サービス間の相互運用性の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。