首頁  >  文章  >  後端開發  >  php中使用protobuffer

php中使用protobuffer

步履不停
步履不停原創
2019-06-19 09:48:034408瀏覽

php中使用protobuffer

Protobuf 簡介

protobuf(Protocol buffers)是Google出品的跨平台、跨語言、可擴展的資料傳輸及儲存的協議,是高效的資料壓縮編碼方式之一。

Protocol buffers 在序列化資料方面,它是靈活的,有效率的。相較於 XML 來說,Protocol buffers 更加小巧,更加快速,更加簡單。一旦定義了要處理的資料的資料結構之後,就可以利用 Protocol buffers 的程式碼產生工具來產生相關的程式碼。甚至可以在無需重新部署程式的情況下更新資料結構。只要使用 Protobuf 對資料結構進行一次描述,即可利用各種不同語言或從各種不同資料流對你的結構化資料輕鬆讀寫。

Protocol buffers 很適合做資料儲存或 RPC 資料交換格式。可用於通訊協定、資料儲存等領域的語言無關、平台無關、可擴展的序列化結構資料格式。

此外,Protobuf由於其在內網高效的資料交換效率,是被廣泛應用於微服務的,在Google的開源框架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

安裝lumengoogle/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的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn