spiral / goridge
High-performance PHP-to-Golang RPC bridge
Fund package maintenance!
roadrunner-server
Installs: 6 735 298
Dependents: 30
Suggesters: 0
Security: 0
Stars: 102
Watchers: 12
Forks: 10
Type:goridge
Requires
- php: >=8.1
- ext-json: *
- ext-sockets: *
- spiral/roadrunner: ^2023 || ^2024.1
Requires (Dev)
- google/protobuf: ^3.22
- infection/infection: ^0.26.1
- jetbrains/phpstorm-attributes: ^1.0
- phpunit/phpunit: ^10.0
- rybakit/msgpack: ^0.7
- vimeo/psalm: ^5.9
Suggests
- ext-msgpack: MessagePack codec support
- ext-protobuf: Protobuf codec support
- google/protobuf: (^3.0) Protobuf codec support
- rybakit/msgpack: (^0.7) MessagePack codec support
- 4.x-dev
- v4.2.0
- 4.1.1
- 4.1.0
- 4.0.0
- 3.x-dev
- v3.2.1
- v3.2.0
- v3.1.2
- v3.1.1
- v3.1.0
- v3.0.1
- v3.0.0
- v3.0.0-beta4
- v3.0.0-beta3
- v3.0.0-beta2
- v3.0.0-beta1
- v2.4.5
- v2.4.4
- v2.4.3
- v2.4.2
- 2.4.1
- 2.4.0
- v2.3.3
- v2.3.2
- v2.3.0
- v2.2.1
- v2.2.0
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-fix/sequence
This package is auto-updated.
Last update: 2024-11-27 09:08:01 UTC
README
High-performance PHP-to-Golang IPC bridge
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.
Golang source code can be found in this repository: goridge
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 existing 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.