Protobuf 简介
protobuf(Protocol buffers)是谷歌出品的跨平台、跨言语、可扩大的数据传输及存储的协定,是高效的数据压缩编码体式格局之一。
Protocol buffers 在序列化数据方面,它是天真的,高效的。比拟于 XML 来讲,Protocol buffers 越发玲珑,越发疾速,越发简朴。一旦定义了要处置惩罚的数据的数据构造以后,就能够应用 Protocol buffers 的代码生成东西生成相干的代码。以至能够在无需重新部署顺序的情况下更新数据构造。只需运用 Protobuf 对数据构造举行一次形貌,即可应用种种差别言语或从种种差别数据流中对你的构造化数据轻松读写。
Protocol buffers 很适合做数据存储或 RPC 数据交换花样。可用于通信协定、数据存储等范畴的言语无关、平台无关、可扩大的序列化构造数据花样。
另外,Protobuf因为其在内网高效的数据交换效力,是被普遍应用于微效劳的,在谷歌的开源框架grpc等于基于此构建起来的。
php-protobuf装置
因为protobuf原生并不支撑php,所以php假如运用pb则须要装置响应扩大。
pecl install protobuf
环境中须要有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-protobuf装置胜利
php --ri protobuf
装置lumen和google/protobuf依靠
lumen new rpc
lumen new rpc
敕令相当于composer create-project laravel/lumen rpc
composer require google/protobuf
在composer.json
下增加classmap:
{ "classmap": [ "protobuf/" ] }
ok,准备工作都已做好了。
本身做一个demo
在代码目次下建立一个protobuf文件夹mkdir protobuf
进入该目次,建立一个文件searchRequest.proto
syntax = "proto3"; message SearchRequest { string query = 1; int32 page_number = 2; int32 result_per_page = 3; enum Corpus { UNIVERSAL = 0; WEB = 1; IMAGES = 2; LOCAL = 3; NEWS = 4; PRODUCTS = 5; VIDEO = 6; } Corpus corpus = 4; }
以上就是php中运用protobuffer的细致内容,更多请关注ki4网别的相干文章!