多语言展示
当前在线:1802今日阅读:19今日分享:20

php protobuf的使用

Google Protocol Buffer(简称 Protobuf)是一种轻便高效的结构化数据存储格式,平台无关、语言无关、可扩展,可用于通讯协议和数据存储等领域。本文介绍一下php开发如何使用protobuf,proto2的使用。
工具/原料
1

安装protobuf-2.6.1.tar.gz

2

安装php protobuf的扩展

安装protobuf-2.6.1
1

下载protobuf-2.6.1.tar.gz

3

进入protobuf-2.6.1目录进行安装。cd  protobuf-2.6.1./configure --prefix=/usr/local/protobufmake && make install

4

修改环境变量export PATH=/usr/local/protobuf/bin:$PATH安装成功后使用protoc --version可以查看protobuf的版本。

安装php的protobuf扩展
1

在GitHub上下载protobuf的扩展包,这里的版本不要选择高版本,高版本支持proto3,proto3向下兼容proto2效果不是很好。可以在https://github.com/allegro/php-protobuf/,选择自己想要的版本。

2

解压下载完的0.10.zip包。unzip 0.10.zip

3

进入php-protobuf-0.10目录cd php-protobuf-0.10yum install php-devel(安装依赖)phpize./configure --with-php-config=/usr/local/php/bin/php-config 根据PHP的安装目录来设置make && make install

4

在php.ini里面加一下extension = protobuf.so,再重启php与nginx即可。

测试demo
1

创建.proto文件。vim test.proto 添加如下内容:message Person {    required string name = 1;    required int32 id = 2;    optional string email = 3;    optional double money = 4;}一简单的message结构。

2

执行php ./php-protobuf-0.10/protoc-php.php test.proto生成pb_proto_test.php文件。图三是pb_proto_test.php的文件的部分内容,截图不全。

3

使用protobuf的demo程序,example.php,文件内容如下:setId(1);$foo->setName('zhangshan');$packed = $foo->serializeToString();$foo->reset();try {        $foo->parseFromString($packed);} catch (Exception $ex) {        die('Upss.. there is a bug in this example');}$foo->dump();?>

4

php example.php执行文件结果

5

到此为止,PHP环境下的proto2已经安装好,具体使用可以根据自己的需求来。若对您有帮助,请在下方帮忙点个赞,谢谢!

注意事项

如果想要支持proto2的,安装php protobuf扩展,不要选择高版本。

推荐信息