spiral/app-grpc

Spiral Skeleton GRPC Application

v1.0.6 2019-11-08 12:28 UTC

README

Spiral Framework

Spiral Framework makes developing in PHP exciting again. It optimizes on the power of PHP to quickly develop business logic while uniquely leveraging Golang to craft an elegant infrastructure layer with native support for HTTP/2, GRPC, Queue, and more. Build faster, more efficient applications with this flexible and PSR compliant PHP7 framework (and have fun while you’re at it).

App Skeleton (CLI, GRPC) | Documentation | Twitter | CHANGELOG | Contributing


Server Requirements

Make sure that your server is configured with following PHP version and extensions:

  • PHP 7.2+, 64bit
  • mb-string extension
  • PDO Extension with desired database drivers
  • Install protobuf-ext to gain higher performance.

Application Bundle

Application bundle includes the following components:

  • GRPC Server server based on RoadRunner
  • Console commands via Symfony/Console
  • Queue support for AMQP, Beanstalk, Amazon SQS, in-Memory
  • DBAL and migrations support
  • Monolog, Dotenv
  • Prometheus metrics
  • Cycle DataMapper ORM

Installation

composer create-project spiral/app-grpc

Application server will be downloaded automatically (php-curl and php-zip required).

Once the application is installed you can ensure that it was configured properly by executing:

$ php ./app.php configure

Running GRPC Server

In order to run GRPC server you must specify location of server key and certificate in .rr.yaml file:

grpc:
  listen: tcp://0.0.0.0:50051
  proto: "proto/service.proto"
  workers.command: "php app.php"
  tls.key:  "app.key"
  tls.cert: "app.crt"

To issue local certificate:

$ openssl req -newkey rsa:2048 -nodes -keyout app.key -x509 -days 365 -out app.crt

To start application server execute:

$ ./spiral serve -v -d

On Windows:

$ spiral.exe serve -v -d

You can test your endpoints using any GRPC client. For example using grpcui:

$ grpcui -insecure -import-path ./proto/ -proto service.proto localhost:50051

Make sure to use -insecure option while using a self-signed certificate.

Generating Services

In order to compile protobuf declarations into service code make sure to install:

To update or generate service code for your application run:

$ php ./app.php grpc:generate proto/service.proto

Generated code will be available in app/src/Service. Implemented service will be automatically registered in your application.

License:

MIT License (MIT). Please see LICENSE for more information. Maintained by Spiral Scout.