spiral/goridge

High-performance PHP-to-Golang RPC bridge

Maintainers

👁 wolfy-j

Package info

github.com/spiral/goridge-php

Homepage

Issues

Chat

Documentation

Type:goridge

pkg:composer/spiral/goridge

Fund package maintenance!

roadrunner-server

Statistics

Installs: 14 110 742

Dependents: 34

Suggesters: 0

Stars: 123

4.2.2 2026-05-11 11:29 UTC

Requires

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

Provides

None

Conflicts

None

Replaces

None

MIT a14454ce6c9cfcec76bbd283292c25fb33fc5a43


README

👁 Image

High-performance PHP-to-Golang IPC bridge

👁 Latest Stable Version
👁 CI
👁 Codecov
👁 Chat

👁 PHPClasses Innovation Award

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.