goridge

High-performance PHP-to-Golang IPC bridge

Github stars Tracking Chart

High-performance PHP-to-Golang IPC bridge

Latest Stable Version
GoDoc
Build Status
Scrutinizer Code Quality
Go Report Card

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.

Features

  • no external dependencies or services, drop-in (64bit PHP version required)
  • low message footprint (17 bytes over any binary payload), binary error detection
  • 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
  • []byte transfer, including big payloads
  • service, message and transport level error handling
  • hackable
  • works on Windows

Installation

$ go get "github.com/spiral/goridge"
$ composer require spiral/goridge

Example

<?php
use Spiral\Goridge;
require "vendor/autoload.php";

$rpc = new Goridge\RPC(new Goridge\SocketRelay("127.0.0.1", 6001));

echo $rpc->call("App.Hi", "Antony");
package main

import (
	"fmt"
	"github.com/spiral/goridge"
	"net"
	"net/rpc"
)

type App struct{}

func (s *App) Hi(name string, r *string) error {
	*r = fmt.Sprintf("Hello, %s!", name)
	return nil
}

func main() {
	ln, err := net.Listen("tcp", ":6001")
	if err != nil {
		panic(err)
	}

	rpc.Register(new(App))

	for {
		conn, err := ln.Accept()
		if err != nil {
			continue
		}
		go rpc.ServeCodec(goridge.NewCodec(conn))
	}
}

Check this libraries in order to find suitable socket manager:

License

The MIT License (MIT). Please see LICENSE for more information.

Main metrics

Overview
Name With Ownerroadrunner-server/goridge
Primary LanguageGo
Program languageGo (Language Count: 3)
Platform
License:MIT License
所有者活动
Created At2017-08-13 15:34:04
Pushed At2025-04-25 16:31:58
Last Commit At2025-04-25 18:31:56
Release Count75
Last Release Namev3.8.3 (Posted on )
First Release Namev1.0.0 (Posted on )
用户参与
Stargazers Count1.3k
Watchers Count41
Fork Count77
Commits Count627
Has Issues Enabled
Issues Count0
Issue Open Count0
Pull Requests Count93
Pull Requests Open Count0
Pull Requests Close Count23
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private