xref: /aosp_15_r20/external/grpc-grpc/examples/php/echo/README.md (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1*cc02d7e2SAndroid Build Coastguard Worker
2*cc02d7e2SAndroid Build Coastguard Worker# gRPC PHP End-to-End Examples
3*cc02d7e2SAndroid Build Coastguard Worker
4*cc02d7e2SAndroid Build Coastguard WorkerThis page shows a number of ways to create a PHP gRPC client and connect with
5*cc02d7e2SAndroid Build Coastguard Workera gRPC backend service.
6*cc02d7e2SAndroid Build Coastguard Worker
7*cc02d7e2SAndroid Build Coastguard Worker
8*cc02d7e2SAndroid Build Coastguard Worker## Run the Server
9*cc02d7e2SAndroid Build Coastguard Worker
10*cc02d7e2SAndroid Build Coastguard WorkerFor all the following examples, we use a simple gRPC server, written in Node.
11*cc02d7e2SAndroid Build Coastguard Worker
12*cc02d7e2SAndroid Build Coastguard Worker```sh
13*cc02d7e2SAndroid Build Coastguard Worker$ git clone https://github.com/grpc/grpc-web
14*cc02d7e2SAndroid Build Coastguard Worker$ cd grpc-web
15*cc02d7e2SAndroid Build Coastguard Worker$ docker-compose build prereqs node-server
16*cc02d7e2SAndroid Build Coastguard Worker$ docker run -d -p 9090:9090 --name node-server grpcweb/node-server
17*cc02d7e2SAndroid Build Coastguard Worker```
18*cc02d7e2SAndroid Build Coastguard Worker
19*cc02d7e2SAndroid Build Coastguard Worker
20*cc02d7e2SAndroid Build Coastguard Worker## Install the gRPC PECL extension
21*cc02d7e2SAndroid Build Coastguard Worker
22*cc02d7e2SAndroid Build Coastguard WorkerAll the following commands are assumed to be run from this current directory.
23*cc02d7e2SAndroid Build Coastguard Worker
24*cc02d7e2SAndroid Build Coastguard Worker```sh
25*cc02d7e2SAndroid Build Coastguard Worker$ cd grpc/examples/php/echo
26*cc02d7e2SAndroid Build Coastguard Worker```
27*cc02d7e2SAndroid Build Coastguard Worker
28*cc02d7e2SAndroid Build Coastguard Worker
29*cc02d7e2SAndroid Build Coastguard WorkerIn order to build a PHP gRPC client, we need to install the `grpc` extension
30*cc02d7e2SAndroid Build Coastguard Workerfirst.
31*cc02d7e2SAndroid Build Coastguard Worker
32*cc02d7e2SAndroid Build Coastguard Worker```sh
33*cc02d7e2SAndroid Build Coastguard Worker$ docker build -t grpc-php/base -f ./base.Dockerfile .
34*cc02d7e2SAndroid Build Coastguard Worker```
35*cc02d7e2SAndroid Build Coastguard Worker
36*cc02d7e2SAndroid Build Coastguard Worker
37*cc02d7e2SAndroid Build Coastguard Worker## CLI
38*cc02d7e2SAndroid Build Coastguard Worker
39*cc02d7e2SAndroid Build Coastguard Worker
40*cc02d7e2SAndroid Build Coastguard WorkerLet's first build a simple CLI gRPC client:
41*cc02d7e2SAndroid Build Coastguard Worker
42*cc02d7e2SAndroid Build Coastguard Worker```sh
43*cc02d7e2SAndroid Build Coastguard Worker$ docker build -t grpc-php/echo-client -f ./cli.Dockerfile .
44*cc02d7e2SAndroid Build Coastguard Worker$ docker run -it --rm --link node-server:node-server grpc-php/echo-client
45*cc02d7e2SAndroid Build Coastguard Worker$ php client.php
46*cc02d7e2SAndroid Build Coastguard Worker```
47*cc02d7e2SAndroid Build Coastguard Worker
48*cc02d7e2SAndroid Build Coastguard Worker
49*cc02d7e2SAndroid Build Coastguard Worker
50*cc02d7e2SAndroid Build Coastguard Worker## Apache
51*cc02d7e2SAndroid Build Coastguard Worker
52*cc02d7e2SAndroid Build Coastguard Worker
53*cc02d7e2SAndroid Build Coastguard WorkerNow let's see how the gRPC PHP client can run with Apache:
54*cc02d7e2SAndroid Build Coastguard Worker
55*cc02d7e2SAndroid Build Coastguard Worker```sh
56*cc02d7e2SAndroid Build Coastguard Worker$ docker build -t grpc-php/apache -f ./apache.Dockerfile .
57*cc02d7e2SAndroid Build Coastguard Worker$ docker run -it --rm --link node-server:node-server -p 80:80 grpc-php/apache
58*cc02d7e2SAndroid Build Coastguard Worker```
59*cc02d7e2SAndroid Build Coastguard Worker
60*cc02d7e2SAndroid Build Coastguard WorkerOpen the browser to `http://localhost`.
61*cc02d7e2SAndroid Build Coastguard Worker
62*cc02d7e2SAndroid Build Coastguard Worker
63*cc02d7e2SAndroid Build Coastguard Worker
64*cc02d7e2SAndroid Build Coastguard Worker## Nginx + FPM
65*cc02d7e2SAndroid Build Coastguard Worker
66*cc02d7e2SAndroid Build Coastguard Worker
67*cc02d7e2SAndroid Build Coastguard WorkerWe can also try running PHP-FPM and put Nginx in front of it.
68*cc02d7e2SAndroid Build Coastguard Worker
69*cc02d7e2SAndroid Build Coastguard Worker
70*cc02d7e2SAndroid Build Coastguard WorkerThe PHP-FPM part:
71*cc02d7e2SAndroid Build Coastguard Worker
72*cc02d7e2SAndroid Build Coastguard Worker```sh
73*cc02d7e2SAndroid Build Coastguard Worker$ docker build -t grpc-php/fpm -f ./fpm.Dockerfile .
74*cc02d7e2SAndroid Build Coastguard Worker$ docker run -it --rm --link node-server:node-server -p 9000:9000 \
75*cc02d7e2SAndroid Build Coastguard Worker  --name fpm grpc-php/fpm
76*cc02d7e2SAndroid Build Coastguard Worker```
77*cc02d7e2SAndroid Build Coastguard Worker
78*cc02d7e2SAndroid Build Coastguard WorkerThe Nginx part:
79*cc02d7e2SAndroid Build Coastguard Worker
80*cc02d7e2SAndroid Build Coastguard Worker```sh
81*cc02d7e2SAndroid Build Coastguard Worker$ docker run -it --rm -v $(pwd)/nginx.conf:/etc/nginx/conf.d/default.conf:ro \
82*cc02d7e2SAndroid Build Coastguard Worker  --link fpm:fpm -p 80:80 nginx:1.17.4
83*cc02d7e2SAndroid Build Coastguard Worker```
84*cc02d7e2SAndroid Build Coastguard Worker
85*cc02d7e2SAndroid Build Coastguard Worker
86*cc02d7e2SAndroid Build Coastguard WorkerOpen the browser to `http://localhost`.
87