首页 > 编程知识 正文

protobuffer序列化,php中session使用

时间:2023-05-03 14:41:52 阅读:153649 作者:4385

protobuffer是谷歌发布的一种数据传输方式,具有具体压缩、体积小的特点

protobuffer本身不支持php,必须使用第三方程序将. proto文件转换为php支持的文件

一.下载并安装protoc编译器

tar-xzfprotobuf-2.4.1.tar.gzcdprotobuf-2.4.1

cd protobuf-2.1.0

./configure---prefix=/usr/local/proto

化妆

制造商检查

制造安装

下载并安装支持protoc的php扩展

33559 github.com/ch obie/PHP-protocol buffers

wget---- no-check-certificate 3359 github.com/ch obie/PHP-protocol buffers/archive/master.zip

unzipmastercdphp -协议缓冲器- master /

/usr/local/php5/高兴柜/phpize

./configure-- with-PHP-config=/usr/local/PHP5/高兴的储物柜/php-config

生成安装

重新启动php

kill-usr2` cat/usr/local/PHP5/var/run/PHP-fpm.PID `

生成的. so文件是protocolbuffers.so

allegro/php-protobuf本身具有扩展,还支持将. proto文件转换为php文件

生成的. so文件是protobuf.so

三.下载drslump/Protobuf-PHP获取protoc-gen-php插件

的双曲正弦值

/usr/local/php5/高兴的储物柜/pear channel-discover pear.pollin imini.net

/usr/local/php5/高兴的储物柜/pearinstalldrslump/proto buf-beta

四.将proto文件转换为php文件

/usr/local/proto/高兴的储物柜/protoc-- plugin=protoc-gen-PHP=‘/home/source/proto buf-PHP-master/protoc

执行后的错误报告

PHP warning : declarationofgoogleproto bufdescriptor proto :3360 clear extension (shouldbecompatiblewithdrslump ) 消息:3360 clear extension ($ extname ) in/home/source/proto buf-PHP-master/library/dr slump/proto buf/coof

- PHP _ out : protoc-gen-PHP : pluginoutputisunparseable。

类中的方法重复。 评论一下就好了

PHP warning : missing argument1fordr slumpproto buf message33603360hasextension (,called in/home/source/proto buf-PHP-master/library/dr slump/proto buf/compiler/PHP generator.PHP online 280 and dine proto buf-PHP-master/library/dr slump/proto buf/message.PHP online 283

PHP notice 3360 undefined variable : extname in/home/source/proto buf-PHP-master/library/dr slump/proto buf/messa AAA

PHP warning : missing argument1fordr slumpproto buf message33603360hasextension (,called in/home/source/proto buf-PHP-master/library/dr slump/proto buf/compiler/PHP generator.PHP online 87 andeer proto buf-PHP-master/library/dr slump/proto buf/message.PHP online 283

PHP notice 3360 undefined variable : extname in/home/source/proto buf-PHP-master/library/dr slump/proto buf/messa AAA

- PHP _ out : protoc-gen-PHP : pluginoutputisunparseable。

library/dr slump/proto buf/compiler/PHP generator.PHP

87行

if ($ proto-has扩展) ) ) }

中选择另一种天花板类型

if($proto-hasextension () null ) )。

280行

if ($ msg-has扩展) ) )

中选择另一种天花板类型

if ($ msg-has扩展() null ) )。

VI/home/source/proto buf-PHP-master/library/dr slump/proto buf/compiler/CLI.PHP

添加第二行

set _ include _ path (‘./usr/local/PHP5/share/pear /‘)

可执行文件

使用allegro/php-protobuf时,这似乎是protoc的php客户端

wget 3359 github.com/allegro/PHP-proto buf/archive/master.zip

unzip master.zipcdphp-proto buf-master

/usr/local/php5/高兴柜/phpize

./configure-- with-PHP-config=/usr/local/PHP5/高兴的储物柜/php-config

生成安装

重新启动php

kill-usr2` cat/usr/local/PHP5/var/run/PHP-fpm.PID `

使用方法

/usr/local/php5/高兴的储物柜/PHP/home/source/aa/ab/CD/PHP-proto buf-master/protoc-PHP.PHP-t.test 2

请务必用-t表示输入文件的路径。 否则,不会输出文件

示例:

vi test2.proto

message PhoneNumber {

requiredstring number=1;

required int32 type=2;

}

消息人员{

要求字符串名称=1;

required int32 id=2;

选项字符串电子邮件=3;

repeated PhoneNumber phone=4;

optionaldouble money=5;

}

消息地址簿{

repeated Person person=1;

}

生成与proto相对应的php文件

/usr/local/php5/高兴的储物柜/PHP/home/source/aa/ab/CD/PHP-proto buf-master/protoc-PHP.PHP-t.test 2

viexample_2.php

? PHP require _ once‘Pb _ proto _ test2. PHP‘; $foo=newPerson (; $ foo-set name (‘ABC’); $foo-setId(1() 1; $ foo-set email (‘ABC’); $foo-setMoney(321321.32 ); $phone_num=newPhoneNumber (; $ phone _ num-setnumber (16589875625 ); $phone_num-settype(3; $foo-appendphone($phone_num ); //$foo-appendphone(2;

$packed=$foo-serializeToString (; //echo $packed; 退出; #$foo-clear (;

echo-------- src-----src---- -; echo $foo-getName ().' (n ); echo $foo-getPhone () [0]-getNumber ).'n '; $foo-dump (; echo------------nn '; try{$p=newPerson (; $p-parsefromstring($packed ); echo---------parsed-----n '; echo $p-getName ().' (n ); echo $p-getEmail ().' (n ); echo $p-getMoney ().' (n ); echo $p-getId ().' (n ); echo $p-getPhone () [0]-getNumber ).'n '; //$p-dump (;

ECHO--------n '; //print_r($Xiao );

}catch(exception$ex ) die ) (upss . thereisabuginthisexample‘);

}

运行php文件

/usr/local/php5/高兴的储物柜/php example_2.php

原文: http://www.cnblogs.com/胡子山水/p/5470693.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。