Maison  >  Article  >  développement back-end  >  Interaction de données en temps réel à l'aide de PHP et Thrift

Interaction de données en temps réel à l'aide de PHP et Thrift

WBOY
WBOYoriginal
2023-06-28 11:04:391049parcourir

Avec le développement continu de la technologie Internet, l'interaction des données en temps réel devient de plus en plus importante dans tous les domaines. Utiliser la technologie PHP et Thrift pour obtenir une interaction de données en temps réel est devenu une solution tout à fait réalisable. Cet article présentera comment utiliser PHP et Thrift pour obtenir une interaction de données en temps réel et fournira un exemple simple.

1. Qu'est-ce que l'épargne ?

Thrift est un framework d'appel de procédure à distance (RPC) multilingue développé par Facebook. Il prend en charge plusieurs langages de programmation, notamment Java, PHP, Python, etc. Thrift utilise IDL (Interface Definition Language) pour définir les types de données et les interfaces de service, puis utilise un générateur de code pour générer du code client et serveur dans différents langages de programmation, permettant au client et au serveur de communiquer entre les langages.

Une caractéristique importante de Thrift est qu'il utilise un protocole binaire au lieu de XML ou JSON. Cela permet à Thrift de transmettre des données efficacement et permet aux utilisateurs de personnaliser les algorithmes de compression de données pour améliorer l'efficacité de la transmission.

2. Comment utiliser Thrift ?

  1. Installer Thrift

Nous pouvons installer Thrift via la commande suivante :

sudo apt-get install thrift-compiler

ou télécharger et installer via le site officiel : https://thrift.apache.org/download

  1. Écriture de fichiers Thrift

Thrift utilise IDL Définir les types de données et les interfaces de service. Voici un exemple simple de fichier Thrift, comprenant une interface de service et un type de données :

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),
}

Dans cet exemple, nous définissons une structure de données Personne, qui contient des informations telles que le nom, l'adresse e-mail et le sexe. Nous avons également défini une interface de service PersonService, qui comprend les fonctions d'ajout, de suppression et d'interrogation d'informations personnelles.

  1. Générer du code

Exécutez la commande suivante pour générer du code PHP :

thrift --gen php example.thrift

Cette commande générera du code PHP basé sur le fichier Thrift example.thrift.

  1. Écrire du code côté serveur

Côté serveur, nous devons implémenter l'interface de service PersonService. Voici un exemple de code PHP simple :

<?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;
    }
}

Dans cet exemple, nous implémentons l'interface PersonServiceIf et écrivons les méthodes addPerson, deletePerson et getPerson selon la logique métier spécifique.

  1. Écriture du code client

Côté client, nous devons écrire du code pour appeler le service distant. En utilisant le code client généré par Thrift, nous pouvons facilement implémenter ce processus. Voici un exemple simple de code client 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);

Dans cet exemple, nous utilisons d'abord les classes Transport et Protocol fournies par Thrift pour nous connecter au serveur et instancier l'objet client. Ensuite, nous avons appelé la méthode addPerson, la méthode deletePerson et la méthode getPerson pour réaliser une interaction de données en temps réel entre le client et le serveur via la transmission réseau.

3. Exemple de réalisation d'une interaction de données en temps réel

Ce qui suit est un exemple simple qui montre comment utiliser PHP et Thrift pour réaliser une interaction de données en temps réel. Supposons que nous ayons une salle de discussion en ligne où les utilisateurs peuvent envoyer des messages et où d'autres utilisateurs peuvent voir les messages. Nous pouvons utiliser Thrift pour définir la structure des messages et l'interface du service de discussion, et utiliser PHP pour implémenter le serveur et le client.

  1. Définir le fichier Thrift

Nous définissons une classe Message, qui contient des informations telles que l'expéditeur, le destinataire, l'heure d'envoi et le contenu du message. Nous avons également défini une interface de service ChatService, qui inclut les fonctions d'envoi de messages et d'obtention de tous les messages.

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. Générer du code

Exécutez la commande suivante pour générer du code PHP :

thrift --gen php example.thrift

Le code généré inclut des fichiers tels que Person.php, PersonService.php, PersonServiceClient.php et Thrift.

  1. Écrire du code côté serveur

Côté serveur, nous devons implémenter l'interface du service ChatService Voici un exemple de code PHP simple :

<?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;
    }
}

Dans cet exemple, nous implémentons l'interface ChatServiceIf et utilisons un tableau pour. stockez-le Tous les messages reçus. Lorsque le serveur reçoit un message, nous le stockons dans un tableau. Lorsque le client appelle la méthode getAllMessages, nous renvoyons tous les messages stockés.

  1. Écriture du code client

Côté client, nous devons écrire du code pour appeler le service distant. Voici un exemple simple de code client 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}
";
}

Dans cet exemple, nous créons d'abord un objet client et nous nous connectons au serveur en utilisant les classes fournies par Thrift. Ensuite, nous envoyons un message, appelons la méthode sendMessage et utilisons la méthode getAllMessages pour obtenir tous les messages et les afficher.

5. Conclusion

En utilisant PHP et Thrift pour obtenir une interaction de données en temps réel, nous pouvons facilement réaliser une communication multilingue, rendant l'interaction de données entre différentes plates-formes plus efficace et fiable. Dans le même temps, les fonctionnalités multilingues de Thrift rendent également l'expansion et la maintenance des applications plus faciles et plus flexibles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn