spiral / goridge
High-performance PHP-to-Golang RPC bridge
Installs: 379 970
Dependents: 11
Suggesters: 0
Security: 0
Stars: 1
Watchers: 7
Forks: 0
Open Issues: 0
Type:goridge
Requires
- php: >=7.4
- ext-json: *
- ext-sockets: *
Requires (Dev)
- phpstan/phpstan: ~0.12.34
- phpunit/phpunit: ~8.0
- rybakit/msgpack: ^0.7.1
- spiral/code-style: ^1.0
This package is auto-updated.
Last update: 2021-01-18 12:48:19 UTC
README
Goridge is high performance PHP-to-Golang codec library which works over native PHP sockets and Golang net/rpc package. The library allows you to call Go service methods from PHP with minimal footprint, structures and []byte
support.
See https://github.com/spiral/roadrunner - High-performance PHP application server, load-balancer and process manager written in Golang
Features
- no external dependencies or services, drop-in (64bit PHP version required)
- sockets over TCP or Unix (ext-sockets is required), standard pipes
- very fast (300k calls per second on Ryzen 1700X over 20 threads)
- native
net/rpc
integration, ability to connect to existed application(s) - standalone protocol usage
- structured data transfer using json or msgpack
[]byte
transfer, including big payloads- service, message and transport level error handling
- hackable
- works on Windows
- unix sockets powered (also on Windows)
Installation
$ composer require spiral/goridge
Example
<?php use Spiral\Goridge; require "vendor/autoload.php"; $rpc = new Goridge\RPC\RPC( Goridge\Relay::create('tcp://127.0.0.1:6001') ); //or, using factory: $tcpRPC = new Goridge\RPC\RPC(Goridge\Relay::create('tcp://127.0.0.1:6001')); $unixRPC = new Goridge\RPC\RPC(Goridge\Relay::create('unix:///tmp/rpc.sock')); $streamRPC = new Goridge\RPC\RPC(Goridge\Relay::create('pipes://stdin:stdout')); echo $rpc->call("App.Hi", "Antony");
Factory applies the next format:
<protocol>://<arg1>:<arg2>
More examples can be found in this directory.
License
The MIT License (MIT). Please see LICENSE
for more information.