Heim Backend-Entwicklung PHP-Tutorial Verwendung des ProtoBuf-Datenformats in einer PHP-Umgebung

Verwendung des ProtoBuf-Datenformats in einer PHP-Umgebung

Jun 19, 2020 pm 06:14 PM
php php环境 protobuf 使用 数据格式

Verwendung des ProtoBuf-Datenformats in einer PHP-Umgebung

Vorwort

RPC ist ein Google Unternehmen Ein führendes RPC-Framework, das Protobuf als Datenübertragungsformat verwendet. Mit der Reife des gRPC-Frameworks und der Zunahme der Anzahl der Benutzer hat auch Protobuf, das zugrunde liegende Datenformat, immer mehr Aufmerksamkeit erhalten Für das PHP-Ökosystem , das zugehörige ProtoBuf Es gibt relativ wenige Einführungsdokumente und Nutzungsinformationen, daher hoffe ich, einen kurzen Artikel schreiben zu können, um einigen bedürftigen Studenten zu helfen.

ProtoBuf (Google Protocol Buffer) ist ein sequenzstrukturiertes Datenformat, das von Google für den Datenaustausch verwendet wird. Es verfügt über plattformübergreifende, sprachübergreifende und skalierbare Funktionen. Es ist vom gleichen Typ Verwendet XML und JSON, verfügt jedoch über ein geringeres Übertragungsvolumen und höhere Kodierungs- und Dekodierungsfunktionen. Es eignet sich besonders für Bereiche wie Datenspeicherung und Netzwerkdatenübertragung, die ein hohes Speichervolumen und Echtzeitleistung erfordern.

  Die neueste Version des offiziellen ProtoBuf, ProtoBuf3, unterstützt bereits mehrere Sprachen: C++C#GoJavaPythonRubyObject C JavascriptPHP und bietet Tools zum einfachen Generieren der von ProtoBuf benötigten Klassenbibliotheken für verschiedene Sprachen.

  Im Folgenden wird das Personendatenformat als Beispiel verwendet, um zu beschreiben, wie ProtoBuf3 in einer PHP-Umgebung verwendet wird.

1. Definieren Sie einen Nachrichtentyp

Erstellen Sie eine Definitionsdatei über Person (mit .proto als Suffix), wie im Beispiel ist person.proto, der Dateiinhalt lautet wie folgt:


syntax="proto3";
package test;
message Person{
 string name=1;//姓名
 int32 age=2;//年龄
 bool sex=3;//性别
}
Nach dem Login kopieren

1: gibt an, dass das Proto3-Format verwendet wird, wenn nicht angegeben wird proto2 sein

2. Paketname als test definieren. Beim Generieren einer Klasse wird ein Verzeichnis als test generiert

3. Nachrichtentextinhalt, der die Definition jedes Felds enthält

2. Generieren Sie die entsprechende PHP-Klasse

Nach der Definition des Formats Wenn das Format nicht das generiert, was wir benötigen, sind Klassenbibliotheken tatsächlich bedeutungslos. Google bietet auch ein Toolprotokoll zum Generieren der gewünschten Klassenbibliotheken.

1. Protokoll installieren

Installationsadresse: protobuf-php-3.5.1.tar.gz, die neueste ist 3.5.1

Offiziell Veröffentlichungsadresse: https://github.com/google/protobuf/releases/tag/v3.5.1

Entpacken und installieren:


tar -zxvf protobuf-php-3.5.1.tar.gz
cd protobuf-3.5.1
./configure --prefix=/opt/soft/protobuf
make
make install
Nach dem Login kopieren

2. Klassenbibliothek generieren

/opt/soft/protobuf/bin/protoc --php_out=./ person.proto

Nach der Generierung werden die folgenden Dateien generiert das aktuelle Verzeichnis:

GPBMetadata/Person.php

Test/Person.php

3. Verwendung von ProtoBuf in PHP

Die Verwendung von ProtoBuf in PHP basiert auf einer Protobuf-Erweiterung. Es gibt derzeit zwei Möglichkeiten, es zu verwenden: 1: die C-Erweiterung von PHP, 2: das Lib-Erweiterungspaket von PHP Es ist gerade im Download-Paket zu finden.

Darüber hinaus können Sie auch Composer verwenden, um die abhängige Erweiterung zu installieren: Composer erfordert Google/Protobuf

Hier verwende ich hauptsächlich Composer zur Installation, was mir helfen sollte Autoload generieren

Nach der Installation der Abhängigkeiten können wir mit der Verwendung von Protobuf in der PHP-Umgebung beginnen

1. Serialisierung


<?php
include &#39;vendor/autoload.php&#39;;
include &#39;GPBMetadata/Person.php&#39;;
include &#39;Test/Person.php&#39;;

$person = new Test\Person();
$person->setName("lailaiji");
$person->setAge("28");
$person->setSex(true);
$data = $person->serializeToString();
file_put_contents(&#39;data.bin&#39;,$data);
Nach dem Login kopieren


2. Deserialisierung


<?php
include &#39;vendor/autoload.php&#39;;
include &#39;GPBMetadata/Person.php&#39;;
include &#39;Test/Person.php&#39;;
$bindata = file_get_contents(&#39;./data.bin&#39;);
$person = new Test\Person();
$person->mergeFromString($bindata);
echo $person->getName();
Nach dem Login kopieren

kann Lailaiji normal ausgeben

Allgemeine Verwendung von PHP:

Serialisierung:

1. serializeToString: in eine Binärzeichenfolge serialisieren

2. serializeToJsonString: in eine JSON-Zeichenfolge serialisieren

Deserialisierung:

1. mergeFromString: Binäre String-Deserialisierung

2. mergeFromJsonString: Json-String-Deserialisierung

.Proto-Nachrichtenanalyse

1. Definition:

Variablenname = Position eingeben;

Zum Beispiel: int32 age=1;

Hier muss unterschieden werden. Die Zahl nach dem Variablennamen bedeutet die Position des Variableninhalts in der Binärsequenz und nicht den Wert der Variablen. Die Zahl darf nur nicht wiederverwendbar sein.

2. Derzeit unterstützte Typen:

double, float, int32, int64, uint32, uint64, sint32, sint64

fixed32 , Fixed64,sfixed32,sfixed64,bool,bytes

Empfohlenes Tutorial: „PHP


Das obige ist der detaillierte Inhalt vonVerwendung des ProtoBuf-Datenformats in einer PHP-Umgebung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP arbeitet mit Datenbank CakePHP arbeitet mit Datenbank Sep 10, 2024 pm 05:25 PM

Das Arbeiten mit der Datenbank in CakePHP ist sehr einfach. In diesem Kapitel werden wir die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) verstehen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

CakePHP-Protokollierung CakePHP-Protokollierung Sep 10, 2024 pm 05:26 PM

Die Anmeldung bei CakePHP ist eine sehr einfache Aufgabe. Sie müssen nur eine Funktion verwenden. Sie können Fehler, Ausnahmen, Benutzeraktivitäten und von Benutzern durchgeführte Aktionen für jeden Hintergrundprozess wie Cronjob protokollieren. Das Protokollieren von Daten in CakePHP ist einfach. Die Funktion log() wird bereitgestellt

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

See all articles