解压并安装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的值