php 中使用 protobuf

城裡的野山參發表於2021-08-13

概要

這裡是一篇操作教程,記錄下來方便後續複習。
在PHP中使用protobuf(v3)進行序列化和反序列化,從安裝到使用需要進行哪些步驟,注意哪些問題。

操作環境
Centos7.8
php7.4

安裝

github上搜尋google/protobuf,找到官方源庫文件,找到對應的PHP文件,按照官方文件去進行操作。

文件中安裝涉及了兩個部分,一個是安裝protobuf的C擴充套件,另一個是依賴包google/protobuf

C擴充套件的安裝使用pecl命令(需要使用find / -name pecl查詢,安裝的路徑並沒有在環境變數中),除此之外還依賴其他的命令需要先行安裝,C擴充套件下載安裝的路徑不符合預期(我的php使用remi-php的庫安裝,路徑和原始映象的預設設定不同),之後需要對protobuf.so建立軟連結;之後使用composer安裝依賴包即可。

接下來還需要程式碼生成器protoc[proto的安裝],解析定義檔案*.proto並生成對應php程式碼,在專案中使用,需要引入對應的程式碼才可以,需要變更composer.json檔案增加autoload配置,如果是測試,也可以手動require

使用

使用主要分為兩點,一個是序列化,另一個是反序列化。

$pb=new Demo();
$pb->setName('demo');

//序列化,資料不可看
$string=$pb->serializeToString();

//序列化,資料可看
$string=$pb->serializeToJsonString();

//反序列化
$pb=new Demo();
//從db中獲取到的序列化值,反序列化賦值給$pb,然後就可以正常使用
$pb->mergeFromString($string);
$pb->mergeFromJsonString($string);

$pb->getName();//輸出demo

擴充套件

不同版本的protobuf並不相容,如果涉及到版本轉換,可以參考部落格[php中使用protobuf]PHP文件PHP文件

本作品採用《CC 協議》,轉載必須註明作者和本文連結
城裡的野山參

相關文章