PHPackages                             playtini/grpc-server-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. playtini/grpc-server-bundle

ActiveLibrary

playtini/grpc-server-bundle
===========================

Create grpc server using spriral/php-grpc

1.0.0(4y ago)1249MITPHPPHP &gt;=8.0

Since Jul 30Pushed 4y ago2 watchersCompare

[ Source](https://github.com/playtini/grpc_server_bundle)[ Packagist](https://packagist.org/packages/playtini/grpc-server-bundle)[ RSS](/packages/playtini-grpc-server-bundle/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (7)Versions (2)Used By (0)

gRPC Server Bundle
------------------

[](#grpc-server-bundle)

Create gRPC server using [spriral/php-grpc](https://spiral.dev/docs/grpc-configuration)

Installation
============

[](#installation)

### Step 1: Download the bundle

[](#step-1-download-the-bundle)

```
$ composer require playtini/grpc-server-bundle
```

### Step 2: Copy server binary to `./project/bin` folder

[](#step-2-copy-server-binary-to-projectbin-folder)

```
./vendor/playtini/grpc-server-bundle/bin/rr-grpc ./project/bin/
```

### Step 3: Create server config `.rr.yaml` in project root folder:

[](#step-3-create-server-config-rryaml-in-project-root-folder)

```
grpc:
  listen: "tcp://:6096"
  proto: "./proto/base.proto"
  workers:
    command: "./bin/console roadrunner:grpc-worker"
    relay: "unix://var/roadrunner.sock"
    pool:
      numWorkers: 1

limit:
  interval: 1
  services:
    grpc:
      maxMemory: 100
      TTL: 0
      idleTTL: 0
      execTTL: 60
```

Usage example
-------------

[](#usage-example)

#### Create \*.proto

[](#create-proto)

base.proto

```
syntax="proto3";

package playtini;

option php_generic_services = true;
option php_namespace = "Playtini\\MainServiceName";
option php_metadata_namespace = "Playtini\\MainServiceName\\Meta";

import 'calculator.proto';
```

calculator.proto

```
syntax = "proto3";

package playtini.calculator;

option php_namespace = "Playtini\\MainServiceName\\Calculator";
option php_metadata_namespace = "Playtini\\MainServiceName\\Meta";

message Sum {
  int32 a = 1;
  int32 b = 2;
}

message Result {
  int32 result = 1;
}

service Calculator {
  rpc Sum (calculator.Sum) returns (calculator.Result);
}
```

#### Generate service

[](#generate-service)

Generate service using `protoc` and `protoc-gen-grpc` plugin(roadrunner custom plugin):

```
protoc /proto/base.proto \
        -I/proto -I/proto/base.proto proto/calculator.proto \
        --php_out=/proto/src \
        $(: 👇 custom plugin from roadrunner to generate server interface) \
        --php-grpc_out=/proto/src \
        $(: 👇 generates the client code) \
        --grpc_out=/proto/src \
        --plugin=protoc-gen-grpc=/protobuf/grpc/bins/opt/grpc_php_plugin \
        --proto_path /proto
```

#### Create server side code

[](#create-server-side-code)

Implement generated interface:

```
