PHP中使用Protobuf简介

栏目: PHP · 发布时间: 6年前

内容简介:PHP中使用Protobuf简介

protobuf简介

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

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

安装protobuf

wget http://protobuf.googlecode.com/files/protobuf-2.4.1.tar.bz2 tar -jxvf protobuf-2.4.1.tar.bz2  cd protobuf-2.4.1/ ./configure make make install

查看protobuf版本

protoc --version

编译 PHP 的protobuf扩展

在Google上搜索 protobuf PHP 可在github上找到两个与之相关的开源项目,它们是:

https://github.com/allegro/PHP-protobuf

https://github.com/drslump/Protobuf-PHP

在这里主要介绍allegro的编译方法(别问为什么,因为drslump的编译方法在我的电脑上不成功 -_- ||)。

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

wget https://github.com/allegro/php-protobuf/archive/master.zip unzip master.zip cd php-protobuf-master

安装依赖

yum install php-devel

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

[root@VM_18_199_centos php-protobuf-master]# phpize Configuring for: PHP Api Version:         20100412 Zend Module Api No:      20100525 Zend Extension Api No:   220100525

PHP-config的目录也使用 which PHP-config 这个命令去查看路径,这一步需要安装gcc

yum -y install gcc-c++

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

./configure make make install

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

[root@VM_18_199_centos php-protobuf-master]# make install Installing shared extensions:     /usr/lib64/php/modules/

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

开启PHP的pb扩展

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

extension=/usr/lib64/php/modules/protobuf.so

重启nginx

/usr/sbin/nginx -s reload  //重启php-fpm kill -SIGUSR2 `cat /run/php-fpm/php-fpm.pid`

假如是Apache,则重启Apache

protoc --version

0

编译proto文件

新建一个简单的proto文件:

protoc --version

1

输入以下内容:

protoc --version

2

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

protoc --version

3

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

protoc --version

4

这里会继承 ProtobufMessage 类,它是在 protobuf.so 中自动加载的。

写一个测试类来测试一下:

protoc --version

5

运行

protoc --version

6

可以看到输出:

protoc --version

7


以上所述就是小编给大家介绍的《PHP中使用Protobuf简介》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

你不是个玩意儿

你不是个玩意儿

杰伦·拉尼尔 / 葛仲君 / 中信出版社 / 2011-8 / 35.00元

“你不是个玩意儿。” 这句话当然不是骂人,这是一个宣言。人当然不是玩意儿,不是机器,而是人。 在网络化程度越来越高的今天,我们每个人似乎都有足够的理由,无限欣喜地拥抱互联网。然而,你有没有想过互联网那些不完美的设计却是某种潜在的威胁…… 为什么如此多的暴民在社交网站上争吵不休,很多骂人的脏话我们在现实的人际交往中可能从来不会使用,但在匿名网络环境中却漫天飞舞? 互联网的本质......一起来看看 《你不是个玩意儿》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具