ホームページ >PHPフレームワーク >ThinkPHP >RPC サービスと TP6 Think-Swoole によって構築された Web サービス間の相互運用性

RPC サービスと TP6 Think-Swoole によって構築された Web サービス間の相互運用性

WBOY
WBOYオリジナル
2023-10-12 11:58:461395ブラウズ

TP6 Think-Swoole构建的RPC服务与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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。