Spiral Skeleton GRPC Application
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).
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
protobuf-extto gain higher performance.
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
composer create-project spiral/app-grpc
Application server will be downloaded automatically (
Once the application is installed you can ensure that it was configured properly by executing:
$ php ./app.php configure
In order to run GRPC server you must specify location of server key and certificate in
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
$ 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
-insecureoption while using a self-signed certificate.
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.