Update PHP README.md

pull/23217/head
Stanley Cheung 4 years ago
parent 4b78ae524e
commit 9b66452f7c
  1. 139
      src/php/README.md

@ -21,7 +21,7 @@ in 2020).
## Install the _grpc_ extension
There are two ways to install the `grpc` extension.
* `pecl`
* Via `pecl`
* Build from source
### Install from PECL
@ -33,11 +33,11 @@ $ [sudo] pecl install grpc
or specific version
```sh
$ [sudo] pecl install grpc-1.25.0
$ [sudo] pecl install grpc-1.30.0
```
Note: for users on CentOS/RHEL 6, unfortunately this step won’t work.
Please follow the instructions below to compile the PECL extension from source.
Please make sure your `gcc` version satisfies the minimum requirement as
specified [here](https://grpc.io/docs/languages/#official-support).
### Install on Windows
@ -47,7 +47,7 @@ You can download the pre-compiled `grpc.dll` extension from the PECL
### Build from source
Clone this repository at the [latest stable release tag](https://github.com/grpc/grpc/releases)
Clone this repository at the [latest stable release tag](https://github.com/grpc/grpc/releases).
```sh
$ git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc
@ -94,10 +94,10 @@ extension=grpc.so
In addition to the `grpc` extension, you will need to install the `grpc/grpc`
composer package as well. Add this to your project's `composer.json` file.
```
"require": {
"grpc/grpc": "v1.25.0"
}
```json
"require": {
"grpc/grpc": "~v1.30.0"
}
```
To run tests with generated stub code from `.proto` files, you will also
@ -127,32 +127,18 @@ the version of grpc inside package.xml file.
The compatibility between the grpc and protobuf version is listed as table
below:
grpc | protobuf
--- | ---
v1.0.0 | 3.0.0(GA)
v1.0.1 | 3.0.2
v1.1.0 | 3.1.0
v1.2.0 | 3.2.0
v1.2.0 | 3.2.0
v1.3.4 | 3.3.0
v1.3.5 | 3.2.0
v1.4.0 | 3.3.0
v1.6.0 | 3.4.0
v1.8.0 | 3.5.0
v1.12.0 | 3.5.2
v1.13.1 | 3.5.2
v1.14.2 | 3.5.2
v1.15.1 | 3.6.1
v1.16.1 | 3.6.1
v1.17.2 | 3.6.1
v1.18.0 | 3.6.1
v1.19.1 | 3.6.1
v1.20.1 | 3.7.0
v1.21.3 | 3.7.0
v1.22.0 | 3.8.0
v1.23.1 | 3.8.0
v1.24.0 | 3.8.0
v1.25.0 | 3.8.0
grpc | protobuf | grpc | protobuf | grpc | protobuf
--- | --- | --- | --- | --- | ---
v1.0.0 | 3.0.0(GA) | v1.12.0 | 3.5.2 | v1.22.0 | 3.8.0
v1.0.1 | 3.0.2 | v1.13.1 | 3.5.2 | v1.23.1 | 3.8.0
v1.1.0 | 3.1.0 | v1.14.2 | 3.5.2 | v1.24.0 | 3.8.0
v1.2.0 | 3.2.0 | v1.15.1 | 3.6.1 | v1.25.0 | 3.8.0
v1.2.0 | 3.2.0 | v1.16.1 | 3.6.1 | v1.26.0 | 3.8.0
v1.3.4 | 3.3.0 | v1.17.2 | 3.6.1 | v1.27.3 | 3.11.2
v1.3.5 | 3.2.0 | v1.18.0 | 3.6.1 | v1.28.1 | 3.11.2
v1.4.0 | 3.3.0 | v1.19.1 | 3.6.1 | v1.29.0 | 3.11.2
v1.6.0 | 3.4.0 | v1.20.1 | 3.7.0 | v1.30.0 | 3.12.2
v1.8.0 | 3.5.0 | v1.21.3 | 3.7.0
If `protoc` hasn't been installed, you can download the `protoc` binary from
the protocol buffers
@ -190,6 +176,18 @@ $ git submodule update --init
$ make grpc_php_plugin
```
Alternatively, you can also build the `grpc_php_plugin` with `bazel` now:
```sh
$ bazel build @com_google_protobuf//:protoc
$ bazel build src/compiler:grpc_php_plugin
```
The `protoc` binary will be found in
`bazel-bin/external/com_google_protobuf/protoc`.
The `grpc_php_plugin` binary will be found in
`bazel-bin/src/compiler/grpc_php_plugin`.
Plugin may use the new feature of the new protobuf version, thus please also
make sure that the protobuf version installed is compatible with the grpc
version you build this plugin.
@ -210,7 +208,7 @@ $ [sudo] pecl install protobuf
or specific version
``` sh
$ [sudo] pecl install protobuf-3.8.0
$ [sudo] pecl install protobuf-3.12.2
```
And add this to your `php.ini` file:
@ -224,10 +222,10 @@ extension=protobuf.so
Or require the `google/protobuf` composer package. Add this to your
`composer.json` file:
```
"require": {
"google/protobuf": "^v3.8.0"
}
```json
"require": {
"google/protobuf": "~v3.12.2"
}
```
### Generate PHP classes from your service definition
@ -280,8 +278,8 @@ by the `./bin/generate_proto_php.sh` script.
### Run test server
Run a local server serving the math services. Please see [Node][] for how to
run an example server.
Run a local server serving the `Math`
[service](https://github.com/grpc/grpc/blob/master/src/proto/math/math.proto#L42).
```sh
$ cd grpc/src/php/tests/generated_code
@ -312,7 +310,7 @@ end-to-end example.
Here's how you can specify SSL credentials when creating your PHP client:
```
```php
$client = new Helloworld\GreeterClient('localhost:50051', [
'credentials' => Grpc\ChannelCredentials::createSsl(
file_get_contents('<path to certificate>'))
@ -337,16 +335,27 @@ all possible values of the `grpc.grpc.trace` option, please check
```
grpc.grpc_verbosity=debug
grpc.grpc_trace=all,-timer_check
grpc.grpc_trace=all,-polling,-polling_api,-pollable_refcount,-timer,-timer_check
grpc.log_filename=/var/log/grpc.log
```
> Make sure the log file above is writable, by doing the following:
> ```
> $ sudo touch /var/log/grpc.log
> $ sudo chmod 666 /var/log/grpc.log
> ```
> Note: The log file does grow pretty quickly depending on how much logs are
> being printed out. Make sure you have other mechanisms (perhaps another
> cronjob) to zero out the log file from time to time,
> e.g. `cp /dev/null /var/log/grpc.log`, or turn these off when logs or tracing
> are not necessary for debugging purposes.
### User agent string
You can customize the user agent string for your gRPC PHP client by specifying
this `grpc.primary_user_agent` option when constructing your PHP client:
```
```php
$client = new Helloworld\GreeterClient('localhost:50051', [
'credentials' => Grpc\ChannelCredentials::createInsecure(),
'grpc.primary_user_agent' => 'my-user-agent-identifier',
@ -358,7 +367,7 @@ $client = new Helloworld\GreeterClient('localhost:50051', [
To change the default maximum message size, specify this
`grpc.max_receive_message_length` option when constructing your PHP client:
```
```php
$client = new Helloworld\GreeterClient('localhost:50051', [
'credentials' => Grpc\ChannelCredentials::createInsecure(),
'grpc.max_receive_message_length' => 8*1024*1024,
@ -369,26 +378,28 @@ $client = new Helloworld\GreeterClient('localhost:50051', [
You can customize the compression behavior on the client side, by specifying the following options when constructing your PHP client.
```php
$client = new Helloworld\GreeterClient('localhost:50051', [
'credentials' => Grpc\ChannelCredentials::createInsecure(),
'grpc.default_compression_algorithm' => 2,
'grpc.default_compression_level' => 2,
]);
```
Possible values for grpc.default_compression_algorithm:
0 - No compression
1 - Compress with DEFLATE algorithm
2 - Compress with GZIP algorithm
3 - Stream compression with GZIP algorithm
Possible values for `grpc.default_compression_algorithm`:
```
0: No compression
1: Compress with DEFLATE algorithm
2: Compress with GZIP algorithm
3: Stream compression with GZIP algorithm
```
Possible values for grpc.default_compression_level:
0 - None
1 - Low level
2 - Medium level
3 - High level
Possible values for `grpc.default_compression_level`:
```
Here's an example on how you can put them all together:
0: None
1: Low level
2: Medium level
3: High level
```
$client = new Helloworld\GreeterClient('localhost:50051', [
'credentials' => Grpc\ChannelCredentials::createInsecure(),
'grpc.default_compression_algorithm' => 2,
'grpc.default_compression_level' => 2,
]);
[Node]:https://github.com/grpc/grpc/tree/master/src/node/examples

Loading…
Cancel
Save