protobuf(Protocol buffers)是Google出品的跨平台、跨語言、可擴展的資料傳輸及儲存的協議,是高效的資料壓縮編碼方式之一。
Protocol buffers 在序列化資料方面,它是靈活的,有效率的。相較於 XML 來說,Protocol buffers 更加小巧,更加快速,更加簡單。一旦定義了要處理的資料的資料結構之後,就可以利用 Protocol buffers 的程式碼產生工具來產生相關的程式碼。甚至可以在無需重新部署程式的情況下更新資料結構。只要使用 Protobuf 對資料結構進行一次描述,即可利用各種不同語言或從各種不同資料流對你的結構化資料輕鬆讀寫。
Protocol buffers 很適合做資料儲存或 RPC 資料交換格式。可用於通訊協定、資料儲存等領域的語言無關、平台無關、可擴展的序列化結構資料格式。
此外,Protobuf由於其在內網高效的資料交換效率,是被廣泛應用於微服務的,在Google的開源框架grpc即是基於此構建起來的。
由於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 new rpc
lumen new rpc
指令相當於composer create-project laravel/lumen rpc
composer require google/protobuf
在composer.json
下加入classmap:
{ "classmap": [ "protobuf/" ] }
ok,準備工作都已經做好了。
在程式碼目錄下建立一個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的詳細內容。更多資訊請關注PHP中文網其他相關文章!