解壓並安裝php
tar -xvzf protobuf-2.5.0.tar.gzgit
cd protobuf-2.5.0github
./configure --prefix=指定安裝路徑redis
make && make installvim
我是安裝在/usr/local/protobuf-2.5目錄下的;composer
經過pecl擴展安裝,擴展地址ui
pecl install channel://pecl.php.net/protocolbuffers-0.2.6google
經過源碼編譯, 下載地址spa
tar -xvzf protocolbuffers-0.2.6.tar.gz.net
cd protocolbuffers-0.2.6
phpize
./configure
make && make install
通過1或者2, 而後在你的php.ini配置文件中添加 : extension = "protocolbuffers.so"
獲取ini位置和判斷擴展是否安裝成功,命令行執行以下命令 :
php -i | grep php.ini
php -m | grep protocolbuffers
經過composer安裝事後,protoc-gen-php在 ~/.composer/vendor下面.
在~/.composer下建立demo.proto文件
cd ~/.composer
vim demo.proto
複製以下內容到文件中 :
syntax = "proto2"; package Proto.Demo; message DemoPart1 { required string name = 1; required int32 age = 2; required string amount = 3; } message DemoPart2 { required int32 id = 1; required string address = 2; }
說明:
syntax :指定語法 package :會生成對應的文件夾,而且以package的值生成namespace message :一個message會生成對應的一個文件,每一個文件的名稱就以message的名稱生成, 其餘相關參考 : https://developers.google.com/protocol-buffers/
生成對應的protobuf壓縮相關操做的PHP文件.
運行命令: path_to_protobuf_installed/bin/protoc --plugin=vendor/bin/protoc-gen-php --php_out=path_to_project/Vendor demo.proto 生成文件及對應目錄
進行簡單的相關操做
新建文件demo.php,拷貝以下代碼:
$protoData = ''; $age = 0; $part1 = null; $part1 = new \Proto\Demo\DemoPart1(); $part1->setName('Jack Jones'); $part1->setAge(20); $part1->setAmount('99.99'); $protoData = $part1->serializeToString(); // 運行獲得壓縮事後的字符串 $part1 = \Proto\Demo\DemoPart1::parseFromString($protoData); $age = $part1->getAge(); // 獲取到$age的值