ホームページ  >  記事  >  バックエンド開発  >  PHP でのデータの処理プロトコル バッファー

PHP でのデータの処理プロトコル バッファー

jacklove
jackloveオリジナル
2018-05-22 09:55:222386ブラウズ

この記事では、PHP でのプロトコル バッファー データの処理に関連する問題について説明します。

プロトコル バッファーは、構造化データのシリアル化に使用できる軽量で効率的な構造化データ ストレージ形式であり、データ ストレージまたは RPC データ交換形式に非常に適しています。これは、通信プロトコル、データ ストレージ、その他の分野で、言語、プラットフォームに依存しない、拡張可能なシリアル化された構造化データ形式として使用できます。現在、C++、Java、Python の 3 つの言語の API が提供されています。

protocコンパイラーをインストールします

ダウンロードしてインストールします

$ wget https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz
$ tar zxvf protobuf-2.5.0.tar.gz
$ cd protobuf-2.5.0
$ ./configure --prefix=/usr/local/protobuf
$ sudo make 
$ sudo  make install

インストールの検証:

$ /usr/local/protobuf/bin/protoc  --version
libprotoc 2.5.0

php extension

php extensionをインストールします

$ wget https://pecl.php.net/get/protocolbuffers-0.2.6.tgz
$ tar zxvf protocolbuffers-0.2.6.tgz
$ cd protocolbuffers-0.2.6
$ phpize
$ ./configure
$ sudo make 
$ sudo  make install

php.ini設定ファイルに追加します: extension = "protocolbuffers.so"

$ php -m | grep プロトコルバッファー
プロトコルバッファー

プロトコルプラグイン

$ mkdir ~/code/app$ cd ~/code/app$ composer require protocolbuffers/protoc-gen-php

テスト:

プロトファイルを書き込む

$ vim demo.proto
syntax = "proto2";
package Proto.Demo;
message OrderInfo {
    required string name = 1 ;
    required int32 age = 2;
    required string amount = 3;
}
message UserInfo {
    required int32 uid = 1;
    required string address = 2;
}

PHPクラスライブラリコードを生成する

$ /usr/local/protobuf/bin/protoc --plugin= vendor/bin/protoc -gen-php --php_out=. -I.demo.proto

テストファイルを書きます:

$ vim demo.proto.php<?phpspl_autoload_register(function($name){  static $classmap;  if (!$classmap) {
    $classmap = array(      &#39;Proto\Demo\OrderInfo&#39; => &#39;/Proto/Demo/OrderInfo.php&#39;,      &#39;Proto\Demo\UserInfo&#39; => &#39;/Proto/Demo/UserInfo.php&#39;,      // @@protoc_insertion_point(autoloader_scope:classmap)
    );
  }  if (isset($classmap[$name])) {    require __DIR__ . DIRECTORY_SEPARATOR . $classmap[$name];
  }
});
call_user_func(function(){
  $registry = \ProtocolBuffers\ExtensionRegistry::getInstance();  // @@protoc_insertion_point(extension_scope:registry)});
$oi = new Proto\Demo\OrderInfo();
$oi->setName(&#39;Jack&#39;);
$oi->setAge(28);
$oi->setAmount(&#39;500&#39;);//压缩数据$protoData = $oi->serializeToString();
var_dump("压缩数据:");
var_dump($protoData);//获取到$age的值$obj = Proto\Demo\OrderInfo::parseFromString($protoData);
var_dump("获取数据:");
var_dump($obj->getName());
var_dump($obj->getAge());
var_dump($obj->getAmount());

Test

$ php demo.proto.php 
string(15) "压缩数据:"string(13) "
Jack500"string(15) "获取数据:"string(4) "Jack"string(2) "28"string(3) "500"

この記事では、PHP でのプロトコル バッファー データの処理に関連する内容について説明します。関連知識については、php 中国語 Web サイトに注意してください。

関連する推奨事項:

PHP Express クエリ クラスについて

php は、curl を介して XML データを送信し、XML データを取得します

PHP は Word ドキュメントを完全に生成し、HTML 要素を追加できます

以上がPHP でのデータの処理プロトコル バッファーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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