PHP と Swoole を使用して RPC リモート呼び出しを実装する方法
RPC (リモート プロシージャ コール) は、アプリケーションがさまざまなコンピューター上で関数呼び出しを行うことを可能にするリモート呼び出しプロトコルです。 RPC は分散システムの構築によく使用され、さまざまなマイクロサービスを連携させることができます。
PHP と Swoole の世界では、他のサードパーティ ライブラリにあまり依存せずに、RPC を使用してリモート呼び出しを簡単に行うことができます。この記事では、PHP と Swoole を使用して RPC リモート呼び出しを実装する方法について説明します。
まず、PHP をサポートする高性能ネットワーク通信エンジンである Swoole をインストールする必要があります。 Swoole は、Web サーバー、RPC、SOA などのネットワーク アプリケーションを構築するために使用できます。
次のコマンドを使用して Swoole をインストールできます:
pecl install swoole
最初のタスクは、次のコマンドに応答できる RPC サービスを作成することです。クライアントのリクエスト。ここでは、Swoole を使用して、クライアントの接続リクエストをリッスンし、クライアントから送信されたデータを処理できるサーバーを作成します。
まず、server.php ファイルを作成し、次のコードを使用して Swoole サーバーを作成します。
<?php $server = new SwooleServer('0.0.0.0', 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP);
このコードでは、0.0 をリッスンできる TCP サーバーを作成します。 0.0 :9501 アドレスとポート。
次に、クライアント接続リクエストをリッスンし、各クライアントの接続を作成する必要があります。
$server->on('Connect', function ($serv, $fd) { echo "Client {$fd} connected. "; });
このコードは、各クライアントが接続するときに呼び出され、新しく接続されたクライアントの要求を処理するために使用できます。ここでは単純にメッセージを出力します。
次に、クライアントから送信されたデータをリッスンし、リクエストを処理する必要があります。ここでは、JSON 形式を使用してデータを渡します。
$server->on('Receive', function ($serv, $fd, $from_id, $data) { $request = json_decode($data, true); if ($request['method'] == 'ping') { $response = array('success' => true, 'message' => 'pong'); } else { $response = array('success' => false, 'message' => 'invalid method'); } $serv->send($fd, json_encode($response)); });
このコードは、JSON 形式のリクエストを解析し、リクエスト メソッドが ping であるかどうかを判断します。そうであれば、「pong」という名前の応答を返し、それ以外の場合は、「無効なメソッド」応答という名前のエラーを返します。
最後に、サーバーを起動してクライアントリクエストのリッスンを開始する必要があります。
$server->start();
これで、クライアントの要求に応答できる RPC サーバーを作成できました。次に、RPC サービスが適切に動作しているかどうかをテストするための単純な PHP クライアントを作成する必要があります。
ここでは、コマンド ライン モードでクライアント スクリプトを実行し、PHP の組み込みソケット ライブラリを使用してリクエストをサーバーに送信します。
まず、client.php ファイルを作成し、次のコードを使用してサーバーに接続し、リクエストを送信する必要があります。
<?php $client = stream_socket_client('tcp://127.0.0.1:9501', $errno, $errmsg, 3); $request = array('method' => 'ping'); fwrite($client, json_encode($request)); $response = stream_get_contents($client); echo $response . PHP_EOL;
このコードでは、stream_socket_client 関数を使用してサーバーに接続し、サーバーに ping リクエストを送信します。次に、サーバーの応答を読み取り、出力します。
これで、クライアント スクリプトを実行して、コンソール出力を確認できます。すべてがうまくいけば、「{'success':true,'message':'pong'}」のような出力が表示されるはずです。
この記事では、PHP と Swoole を使用して RPC リモート呼び出しを実装する方法を学習しました。クライアント要求を処理できる単純な RPC サーバーを作成し、RPC サービスが適切に動作しているかどうかをテストするための単純な PHP クライアントも作成しました。
もちろん、これは完全な RPC システムのほんの一部にすぎません。RPC の詳細については、Swoole のドキュメントを参照してください。
以上がPHPとSwooleを使用してRPCリモート呼び出しを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。