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.
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/rpcintegration, ability to connect to existed application(s)
- standalone protocol usage
- structured data transfer using json
- []bytetransfer, 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.
 該所有者的項目
                                                                (
                                                                該所有者的項目
                                                                (