>  기사  >  백엔드 개발  >  PHP에서 프로토콜 버퍼 데이터 처리

PHP에서 프로토콜 버퍼 데이터 처리

jacklove
jacklove원래의
2018-05-22 09:55:222425검색

이 문서에서는 PHP에서 프로토콜 버퍼 데이터 처리와 관련된 문제를 설명합니다.

프로토콜 버퍼는 구조화된 데이터 직렬화에 사용할 수 있는 가볍고 효율적인 구조화된 데이터 저장 형식이며 데이터 저장 또는 RPC 데이터 교환 형식에 매우 적합합니다. 통신 프로토콜, 데이터 저장 및 기타 분야에서 언어 독립적, 플랫폼 독립적, 확장 가능한 직렬 구조화된 데이터 형식으로 사용할 수 있습니다. 현재 C++, Java, Python 세 가지 언어로 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 확장

php 확장 설치

$ 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 프로토콜 버퍼
protocolbuffers

protoc 플러그인

$ 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=.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 중국어 웹사이트를 참고하시기 바랍니다.

관련 권장 사항:

PHP Express 쿼리 클래스 정보

php는 컬을 통해 XML 데이터를 보내고 XML 데이터를 가져옵니다.

PHP는 단어 문서를 완벽하게 생성하고 html 요소를 추가할 수 있습니다.

위 내용은 PHP에서 프로토콜 버퍼 데이터 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.