Home >Backend Development >PHP Tutorial >安装php的php-protobu扩展及使用

安装php的php-protobu扩展及使用

WBOY
WBOYOriginal
2016-06-20 12:45:491182browse

所用资源:https://github.com/allegro/php-protobuf/

进入解压目录执行: phpize

./configure

make

make install

# please add following line to your php.ini

extension=protobuf.so

重启PHP


phpinfo()  就可以看到 protobuff扩展



如何使用?

保存

首先建方proto文件 foo.proto文件


 message PhoneNumber {

    required string number = 1;

    required int32 type = 2;

  }

message Person {

  required string name = 1;

  required int32 id = 2;

  optional string email = 3;

  repeated PhoneNumber phone = 4;

}

message AddressBook {

  repeated Person person = 1;

}

然后用命令生成

php protoc-php.php foo.proto

这时候会生成一个pb_proto_foo.php文件


下面具体就应用 。


假如与JAVA通信。protobuffer 保存php文件test.php如:

require_once 'pb_proto_test.php';

$packed = curlGet('http://10.0.247.113:8080/testweb/proto'); //此处是JAVA返回的buffer信息

$foo = new AddressBook();

try {

$foo->parseFromString($packed);

} catch (Exception $ex) {

die('Parse error: ' . $e->getMessage());

}

$pb = $foo->getPerson();

//print_r($pb);

//print_r($pb[0]);

echo $pb[0]->getName() .' _ '.$pb[0]->getId() .' _ ';

print_r($pb[0]->getPhone());


PHP调用修改buffer数据

----------------------------

require_once 'pb_proto_test.php';

$foo = new Person();

$foo->setName('xiaojh');

$foo->setId(200);

$foo->setEmail('dofound@163.com');

//$foo->appendPhone(2);

$packed = $foo->serializeToString();

$foo->clear();

try {

$xiao = $foo->parseFromString($packed);

//print_r($xiao);

} catch (Exception $ex) {

die('Upss.. there is a bug in this example');

}

echo $foo->getName();

echo $foo->getPhone()->number;

$foo->dump();


PHP内部调用

------------------------------

生成buffer数据


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn