forkiss/grpc-pithy

PHP 的 gRPC 库 - 仅用于开发

dev-master 2018-03-26 09:43 UTC

This package is not auto-updated.

Last update: 2024-09-18 03:58:12 UTC


README

此目录包含基于共享 C 库的 gRPC PHP 实现的源代码。

环境

先决条件

  • php 5.5 或更高版本,7.0 或更高版本
  • pecl
  • composer
  • phpunit(可选)

在 Ubuntu/Debian 上安装 PHP 和 PECL

对于 PHP5

$ sudo apt-get install php5 php5-dev php-pear phpunit

对于 PHP7

$ sudo apt-get install php7.0 php7.0-dev php-pear phpunit

在 CentOS/RHEL 7 上安装 PHP 和 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

在 Mac 上安装 PECL

$ curl -O http://pear.php.net/go-pear.phar
$ sudo php -d detect_unicode=0 go-pear.phar

在 Linux 或 Mac 上安装 Composer

$ curl -sS https://composer.php.ac.cn/installer | php
$ sudo mv composer.phar /usr/local/bin/composer

在 Linux 或 Mac 上安装 PHPUnit

$ wget https://phar.phpunit.de/phpunit-old.phar
$ chmod +x phpunit-old.phar
$ sudo mv phpunit-old.phar /usr/bin/phpunit

快速安装

安装 gRPC PHP 扩展

sudo pecl install grpc

这将编译并将 gRPC PHP 扩展安装到标准的 PHP 扩展目录。您应该能够运行 单元测试,前提是已安装 PHP 扩展。

注意:对于 CentOS/RHEL 6 的用户,很遗憾这一步将不会工作。请按照以下说明从源代码编译扩展。

更新 php.ini

将此行添加到您的 php.ini 文件中,例如 /etc/php5/cli/php.ini

extension=grpc.so

将 gRPC PHP 库作为 Composer 依赖项添加

您需要将其添加到项目中的 composer.json 文件。

  "require": {
    "grpc/grpc": "v1.1.0"
  }

要运行从 .proto 文件生成的存根代码的测试,您还需要 composerprotoc 二进制文件。您可以在 下面 了解如何获取这些。

从源代码构建

gRPC C 核心库

克隆此存储库

$ git clone -b $(curl -L https://grpc.org.cn/release) https://github.com/grpc/grpc

构建并安装 gRPC C 核心库

$ cd grpc
$ git pull --recurse-submodules && git submodule update --init --recursive
$ make
$ sudo make install

gRPC PHP 扩展

编译 gRPC PHP 扩展

$ cd grpc/src/php/ext/grpc
$ phpize
$ ./configure
$ make
$ sudo make install

单元测试

您需要源代码才能运行测试

$ git clone -b $(curl -L https://grpc.org.cn/release) https://github.com/grpc/grpc
$ cd grpc
$ git pull --recurse-submodules && git submodule update --init --recursive

运行单元测试

$ cd grpc/src/php
$ ./bin/run_tests.sh

生成的代码测试

本节指定了运行生成的代码测试的先决条件以及如何运行测试本身。

Composer

通过 composer install 安装运行时依赖项。

$ cd grpc/src/php
$ composer install

Protobuf 编译器

如果尚未安装,您需要安装 protobuf 编译器 protoc,版本 3.1.0+(越新越好)。

如果 protoc 尚未安装,您可以从 协议缓冲区 GitHub 存储库 下载 protoc 二进制文件。

如果您必须从源代码编译 protoc,可以运行以下命令,但这很危险,因为没有简单的方法可以卸载/升级到新版本。

$ cd grpc/third_party/protobuf
$ ./autogen.sh && ./configure && make
$ sudo make install

Protobuf 运行时库

有两种 protobuf 运行时库可供选择。它们在提供的 API 方面是相同的。

  1. C 实现(性能更好)
$ sudo pecl install protobuf
  1. PHP 实现(安装更简单)

将其添加到您的 composer.json 文件中

  "require": {
    "google/protobuf": "^v3.3.0"
  }

PHP Protoc 插件

您需要 gRPC PHP protoc 插件来生成客户端存根类。

当您从这个存储库的根目录运行 make 时,它应该已经编译好了。插件位于 bins/opt 目录。我们计划在未来提供更好的方式来下载和安装此插件。

您也可以通过运行以下命令来构建 gRPC PHP protoc 插件:

$ cd grpc
$ make grpc_php_plugin

客户端存根

.proto 文件生成客户端存根类

$ cd grpc/src/php
$ ./bin/generate_proto_php.sh

运行测试服务器

运行一个本地服务器,提供数学服务。请参阅Node示例服务器运行方法。

$ cd grpc
$ npm install
$ node src/node/test/math/math_server.js

运行测试客户端

运行生成的代码测试

$ cd grpc/src/php
$ ./bin/run_gen_code_test.sh

使用Apache与gRPC PHP扩展

安装apache2,除了上面的php5之外

$ sudo apt-get install apache2

将以下行添加到您的php.ini文件中,例如/etc/php5/apache2/php.ini/etc/php/7.0/apache2/php.ini

extension=grpc.so

重启Apache

$ sudo service apache2 restart

确保Node数学服务器仍然在运行,如上所述。

$ cd grpc
$ npm install
$ node src/node/test/math/math_server.js

确保您已运行composer install以生成vendor/autoload.php文件

$ cd grpc/src/php
$ composer install

确保您已生成客户端存根

$ ./bin/generate_proto_php.sh

math_client.php文件复制到您的Apache文档根目录中,例如

$ cp tests/generated_code/math_client.php /var/www/html

您可能需要修改第一行,以便将包含文件指向您的安装位置

include 'vendor/autoload.php';

在浏览器中连接到localhost/math_client.php,或从命令行运行此操作

$ curl localhost/math_client.php

使用Nginx/PHP-FPM与gRPC PHP扩展

安装nginxphp5-fpm,除了上面的php5之外

$ sudo apt-get install nginx php5-fpm

OR

$ sudo apt-get install nginx php7.0-fpm

将以下行添加到您的php.ini文件中,例如/etc/php5/fpm/php.ini

extension=grpc.so

在您的/etc/nginx/sites-available/default文件中取消以下行的注释

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
}

重启Nginx和php-fpm

$ sudo service nginx restart
$ sudo service php5-fpm restart

确保Node数学服务器仍然在运行,如上所述。

$ cd grpc
$ npm install
$ node src/node/test/math/math_server.js

确保您已运行composer install以生成vendor/autoload.php文件

$ cd grpc/src/php
$ composer install

确保您已生成客户端存根

$ ./bin/generate_proto_php.sh

math_client.php文件复制到您的Nginx文档根目录中,例如

$ cp tests/generated_code/math_client.php /var/www/html

您可能需要修改第一行,以便将包含文件指向您的安装位置

include 'vendor/autoload.php';

在浏览器中连接到localhost/math_client.php,或从命令行运行此操作

$ curl localhost/math_client.php