内容简介:PHP中使用Protobuf简介
protobuf简介
Protocol Buffers 是一种轻便高效的结构化数据存储格式,可用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前只提供了 C++、 Java 、 Python 三种语言的 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简介》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。