ホームページ バックエンド開発 PHPチュートリアル PHP と Thrift を使用したリアルタイムのデータ対話

PHP と Thrift を使用したリアルタイムのデータ対話

Jun 28, 2023 am 11:04 AM
php thrift リアルタイムのデータ対話

インターネット技術の継続的な発展に伴い、リアルタイムのデータ対話はあらゆる分野でますます重要になってきています。 PHP と Thrift テクノロジーを使用してリアルタイムのデータ対話を実現することは、非常に実現可能なソリューションになりました。この記事では、PHP と Thrift を使用してリアルタイムのデータ対話を実現する方法と、簡単な例を紹介します。

1.倹約とは何ですか?

Thrift は、Facebook によって開発されたクロスランゲージ リモート プロシージャ コール (RPC) フレームワークです。 Java、PHP、Python などを含む複数のプログラミング言語をサポートしています。 Thrift は、IDL (インターフェイス定義言語) を使用してデータ型とサービス インターフェイスを定義し、コード ジェネレーターを使用してクライアントとサーバーのコードをさまざまなプログラミング言語で生成し、クライアントとサーバーが言語を超えて通信できるようにします。

Thrift の重要な特徴は、XML や JSON の代わりにバイナリ プロトコルを使用することです。これにより、Thrift はデータを効率的に送信できるようになり、ユーザーはデータ圧縮アルゴリズムをカスタマイズして送信効率を向上させることができます。

2. Thrift の使用方法は?

  1. Thrift のインストール

Thrift は次のコマンドでインストールできます:

sudo apt-get install thrift-compiler
ログイン後にコピー

または、公式 Web サイトからダウンロードしてインストールできます: https://thrift .apache.org/download

  1. Thrift ファイルの作成

Thrift は IDL を使用してデータ型とサービス インターフェイスを定義します。以下は、サービス インターフェイスとデータ型を含む単純な Thrift ファイルの例です。

namespace php example

struct Person {
    1: required string name,
    2: optional string email,
    3: optional bool gender,
}

service PersonService {
    bool addPerson(1: Person person),
    bool deletePerson(1: string name),
    Person getPerson(1: string name),
}
ログイン後にコピー

この例では、名前、電子メール、性別などの情報を含むデータ構造 person を定義します。また、個人情報の追加、削除、クエリの機能を含む PersonService サービス インターフェイスも定義しました。

  1. コードの生成

次のコマンドを実行して PHP コードを生成します:

thrift --gen php example.thrift
ログイン後にコピー
ログイン後にコピー

このコマンドは、Thrift ファイル example.thrift に基づいて PHP コードを生成します。 。

  1. サーバー側のコードの作成

サーバー側では、PersonService サービス インターフェイスを実装する必要があります。以下は、簡単な PHP コードの例です。

<?php
namespace example;

require_once 'PersonService.php';

class PersonServiceImpl implements examplePersonServiceIf {

    public function addPerson(examplePerson $person) {
        // 插入数据库等操作
        return true;
    }

    public function deletePerson($name) {
        // 从数据库中删除指定姓名的信息
        return true;
    }

    public function getPerson($name) {
        // 从数据库中查询指定姓名的信息
        return $person;
    }
}
ログイン後にコピー

この例では、PersonServiceIf インターフェイスを実装し、特定のビジネス ロジックに従って addperson、deleteperson、および getperson メソッドを記述します。

  1. クライアント コードの記述

クライアント側では、リモート サービスを呼び出すコードを記述する必要があります。 Thrift によって生成されたクライアント コードを使用すると、このプロセスを簡単に実装できます。以下は、単純な PHP クライアント コードの例です。

<?php
namespace example;

require_once 'PersonService.php';

// 连接服务端
$socket = new ThriftTransportTSocket('localhost', 9090);
$transport = new ThriftTransportTBufferedTransport($socket, 1024, 1024);
$protocol = new ThriftProtocolTBinaryProtocol($transport);
$client = new examplePersonServiceClient($protocol);

// 调用addPerson方法
$person = new examplePerson();
$person->name = 'Tom';
$person->email = 'tom@example.com';
$person->gender = true;
$result = $client->addPerson($person);

// 调用deletePerson方法
$name = 'Tom';
$result = $client->deletePerson($name);

// 调用getPerson方法
$name = 'Tom';
$person = $client->getPerson($name);
ログイン後にコピー

この例では、まず Thrift が提供する Transport クラスと Protocol クラスを使用してサーバーに接続し、クライアント オブジェクトをインスタンス化します。次に、addperson メソッド、deleteperson メソッド、getperson メソッドを呼び出して、ネットワーク送信を介したクライアントとサーバー間のリアルタイムのデータ対話を実現しました。

3. リアルタイム データ インタラクションの実現例

次は、PHP と Thrift を使用してリアルタイム データ インタラクションを実現する方法を示す簡単な例です。ユーザーがメッセージを送信でき、他のユーザーがそのメッセージを見ることができるオンライン チャット ルームがあるとします。 Thrift を使用してメッセージ構造とチャット サービス インターフェイスを定義し、PHP を使用してサーバーとクライアントを実装できます。

  1. Thrift ファイルの定義

メッセージの送信者、受信者、送信時刻、メッセージ内容などの情報を含む Message クラスを定義します。また、メッセージの送信とすべてのメッセージの取得の機能を含む ChatService サービス インターフェイスも定義しました。

namespace php example

struct Message {
    1: required string from,
    2: required string to,
    3: required i32 timestamp,
    4: required string content,
}

service ChatService {
    bool sendMessage(1: Message message),
    list<Message> getAllMessages(),
}
ログイン後にコピー
  1. コードの生成

次のコマンドを実行して PHP コードを生成します:

thrift --gen php example.thrift
ログイン後にコピー
ログイン後にコピー

生成されたコードには、Person.php、PersonService.php、PersonServiceClient が含まれます.php や Thrift などのファイル。

  1. サーバー側のコードを記述する

サーバー側では、ChatService サービス インターフェイスを実装する必要があります。以下は簡単な PHP コードの例です:

<?php
namespace example;

require_once 'ChatService.php';

class ChatServiceImpl implements exampleChatServiceIf {
    
    private $messages = [];

    public function sendMessage(exampleMessage $message) {
        $this->messages[] = $message;
        return true;
    }

    public function getAllMessages() {
        return $this->messages;
    }
}
ログイン後にコピー

この例では、ChatServiceIf インターフェイスを実装し、配列を使用して受信したすべてのメッセージを保存します。サーバーがメッセージを受信すると、それを配列に保存します。クライアントが getAllMessages メソッドを呼び出すと、保存されているすべてのメッセージが返されます。

  1. クライアント コードの記述

クライアント側では、リモート サービスを呼び出すコードを記述する必要があります。以下は、単純な PHP クライアント コードの例です。

<?php
namespace example;

require_once 'ChatService.php';

// 连接服务端
$socket = new ThriftTransportTSocket('localhost', 9090);
$transport = new ThriftTransportTBufferedTransport($socket, 1024, 1024);
$protocol = new ThriftProtocolTBinaryProtocol($transport);
$client = new exampleChatServiceClient($protocol);

// 发送消息
$message = new exampleMessage();
$message->from = 'Tom';
$message->to = 'Jerry';
$message->timestamp = time();
$message->content = 'Hello, Jerry!';
$client->sendMessage($message);

// 获取所有消息并输出
$messages = $client->getAllMessages();
foreach ($messages as $message) {
    echo "{$message->from} to {$message->to} at {$message->timestamp}: {$message->content}
";
}
ログイン後にコピー

この例では、最初にクライアント オブジェクトを作成し、Thrift が提供するクラスを使用してサーバーに接続します。次に、メッセージを送信し、sendMessage メソッドを呼び出し、getAllMessages メソッドを使用してすべてのメッセージを取得して出力します。

5. 結論

PHP と Thrift を使用してリアルタイムのデータ インタラクションを実現することで、言語を超えたコミュニケーションを簡単に実現でき、異なるプラットフォーム間のデータ インタラクションがより効率的かつ信頼性の高いものになります。同時に、Thrift のクロスランゲージ機能により、アプリケーションの拡張とメンテナンスがより簡単かつ柔軟になります。

以上がPHP と Thrift を使用したリアルタイムのデータ対話の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

See all articles