

GitHub - spiral/goridge: High-performance PHP-to-Golang IPC bridge which works e...
source link: https://github.com/spiral/goridge
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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 a minimal footprint, structures and []byte
support.
PHP source code can be found in this repository: goridge-php
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)
- low message footprint (12 bytes over any binary payload), binary error detection
- CRC32 header verification
- 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
- unix sockets powered (also on Windows)
Installation
GO111MODULE=on go get github.com/roadrunner-server/goridge/v3
Sample of usage
package main
import (
"fmt"
"net"
"net/rpc"
goridgeRpc "github.com/roadrunner-server/goridge/v3/pkg/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
}
_ = conn
go rpc.ServeCodec(goridgeRpc.NewCodec(conn))
}
}
License
The MIT License (MIT). Please see LICENSE
for more information.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK