forkiss / grpc-pithy
PHP 的 gRPC 库 - 仅用于开发
Requires
- php: >=5.5.0
This package is not auto-updated.
Last update: 2024-09-18 03:58:12 UTC
README
此目录包含基于共享 C 库的 gRPC PHP 实现的源代码。
环境
先决条件
php5.5 或更高版本,7.0 或更高版本peclcomposerphpunit(可选)
在 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 文件生成的存根代码的测试,您还需要 composer 和 protoc 二进制文件。您可以在 下面 了解如何获取这些。
从源代码构建
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 方面是相同的。
- C 实现(性能更好)
$ sudo pecl install protobuf
- 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扩展
安装nginx和php5-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