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 

$ sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
$ sudo yum install php56w php56w-devel php-pear phpunit gcc zlib-devel

安装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 扩展

1sudo pecl install grpc

2、在php.ini文件配置:extension=grpc.so

composer.json添加一个  gRPC PHP library

 "require": {

    "grpc/grpc": "v1.7.0"

  }

安装Protobuf compilerprotoc

安装PHP运行Protobuf需要的库,PHP提供了两种方式,C扩展和PHP自身实现的类库。另外要保证protobufgRPC版本是兼容的。

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.phpPHP 使用gRPC client端调用方法

protobuf示例:

https://github.com/grpc/grpc/blob/master/examples/protos/helloworld.proto


github的示例只给出了php作为gRPC client端的代码,其实一般来在项目中也最好做client。


以上是关于gRPC 在 PHP 中的使用的主要内容,如果未能解决你的问题,请参考以下文章

gRPC 给定 PHP 的错误元数据

gRPC入坑记

gRPC入坑记

使用 nginx 终止 grpc 流量

在 Symfony 4.1 中使用 grpc,“找不到类 'Grpc\ChannelCredentials'。”

PubSub 和 gRPC PHP 的速度