Heim  >  Artikel  >  Backend-Entwicklung  >  安装php的php-protobu扩展及使用

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

WBOY
WBOYOriginal
2016-06-20 12:45:491152Durchsuche

所用资源: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数据


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:制作PHP的RPM包教程Nächster Artikel:怎么进这个网页的数据库