gRPC 在 PHP 中的使用
Posted LNMP开发者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gRPC 在 PHP 中的使用相关的知识,希望对你有一定的参考价值。
gRPC是一个高性能、开源和通用的 RPC框架,gRPC基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。
gRPC 默认使用 protocol buffers,这是 Google 开源的一套成熟的结构数据序列化机制(当然也可以使用其他数据格式如 JSON)。
php作为世界上最好的语言肯定是支持gRPC的,看看pecl很早就有了gRPC的包了:
http://pecl.php.net/package/gRPC
我们看下在CentOS7.x系统中PHP程序员是如何使用gRPC的。
前提条件
php 5.5 or above, 7.0 or above
pecl
composer
phpunit (optional)
安装PHP and PECL
安装Composer
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
安装PHPUnit
$ wget https://phar.phpunit.de/phpunit-old.phar
$ chmod +x phpunit-old.phar
$ sudo mv phpunit-old.phar /usr/bin/phpunit
利用PECL安装PHP-gRPC 扩展
1、sudo pecl install grpc
2、在php.ini文件配置:extension=grpc.so
在composer.json添加一个 gRPC PHP library
"require": {
"grpc/grpc": "v1.7.0"
}
安装Protobuf compiler:protoc
安装PHP运行Protobuf需要的库,PHP提供了两种方式,C扩展和PHP自身实现的类库。另外要保证protobuf和gRPC版本是兼容的。
1、C扩展安装
sudo pecl install protobuf-3.4.0
在php.ini配置:extension=protobuf.so
2、或者用PHP自身的,就是基于composer安装
"require": {
"google/protobuf": "^v3.3.0"
}
具体代码可以看github示例:
https://github.com/grpc/grpc/tree/master/examples/php
greeter_proto_gen.sh:通过proto文件生成PHP存根类的命令
greeter_client.php:PHP 使用gRPC client端调用方法
protobuf示例:
https://github.com/grpc/grpc/blob/master/examples/protos/helloworld.proto
github的示例只给出了php作为gRPC client端的代码,其实一般来在项目中也最好做client。
以上是关于gRPC 在 PHP 中的使用的主要内容,如果未能解决你的问题,请参考以下文章