您的位置:首页 > 编程语言 > PHP开发

PHP-Protobuf的编译

2016-05-24 16:07 495 查看

protobuf简介

Protocol Buffers 是一种轻便高效的结构化数据存储格式,可用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前只提供了 C++、Java、Python 三种语言的 API。

官方不支持PHP,不用担心,高手在民间。上Github搜索一下就有了。

安装protobuf

?

查看protobuf版本

?

编译php的protobuf扩展

在Google上搜索 

protobuf php
 可在github上找到两个与之相关的开源项目,它们是:allegro/php-protobuf 和drslump/Protobuf-PHP。在这里主要介绍allegro的编译方法(别问为什么,因为drslump的编译方法在我的电脑上不成功 -_- ||)。

下面介绍centos(CentOS Linux release 7.0.1406 (Core))环境中下载,编译:

?

安装依赖

?

假如phpize不在默认目录,可以使用 

which phpize
查看,然后写全路径去执行phpize,我这里是默认在 
/usr/bin
目录,可以直接执行,执行之后可以看到以下输出

?

php-config的目录也使用

which php-config
这个命令去查看路径,这一步需要安装gcc

?

安装完gcc之后则开始正式安装pb

?

最后会看到类似这样的安装提示,则说明安装成功。

?

现已成功把pb编译至/usr/lib64/php/modules/protobuf.so

开启php的pb扩展

找到php.in,加入这行代码:

?

重启nginx

?

假如是Apache,则重启Apache

?

编译proto文件

新建一个简单的proto文件:

?

输入以下内容:

?

编译。注意,这里需要引用到protoc-php.php这个文件,注意路径。

?

编译成功后会在当前目录生成一个pbprototest.php文件,内容如下:

?

这里会继承

ProtobufMessage
类,它是在
protobuf.so
中自动加载的。 写一个测试类来测试一下:

?

运行

?

可以看到输出:

?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: