spiral / php-grpc
High-Performance GRPC server for PHP applications
Installs: 713 157
Dependents: 3
Suggesters: 0
Security: 0
Stars: 453
Watchers: 26
Forks: 48
Language:Go
Requires
- php: >=7.2
- ext-json: *
- google/protobuf: ^3.7
- spiral/roadrunner: ^1.8
- symfony/polyfill-php73: ^1.22
- symfony/polyfill-php80: ^1.22
Requires (Dev)
- jetbrains/phpstorm-attributes: ^1.0
- phpunit/phpunit: ^8.5|^9.0
- spiral/code-style: ^1.0
- symfony/var-dumper: >=4.4
- vimeo/psalm: ^4.6
README
⚠️ RRv2 protoc-gen-php-grpc
releases are here: https://github.com/roadrunner-server/roadrunner/releases ⚠️
⚠️ PHP Client
for the RRv2 is here: https://github.com/spiral/roadrunner-grpc ⚠️
PHP-GRPC
PHP-GRPC is an open-source (MIT) high-performance PHP GRPC server build at top of RoadRunner. Server support both PHP and Golang services running within one application.
Note:
For the RoadRunner v2, please use the RR-GRPC library.
Documentation:
Features:
- native Golang GRPC implementation compliant
- minimal configuration, plug-and-play model
- very fast, low footprint proxy
- simple TLS configuration
- debug tools included
- Prometheus metrics
- middleware and server customization support
- code generation using
protoc
plugin (go get github.com/spiral/php-grpc/cmd/protoc-gen-php-grpc
) - transport, message, worker error management
- response error codes over php exceptions
- works on Windows
Usage:
Install rr-grpc
and protoc-gen-php-grpc
by building it or use pre-build binaries.
Define your service schema using proto file. You can scaffold protobuf classes and GRPC service interfaces using:
$ protoc --php_out=target-dir/ --php-grpc_out=target-dir/ sample.proto
Make sure to install protoc compiler and run
composer require spiral/php-grpc
first
Implement needed classes and create worker.php to invoke your services.
Place .rr.yaml (or any other format supported by viper configurator) into the root of your project. You can run your application now:
$ rr-grpc serve -v -d
To reset workers state:
$ rr-grpc grpc:reset
To show workers statistics:
$ rr-grpc grpc:workers -i
See example.
You can find more details regarding server configuration at RoadRunner Wiki.
License:
MIT License (MIT). Please see LICENSE
for more information. Maintained by SpiralScout.