Dieser Artikel vermittelt Ihnen relevantes Wissen über PHP und Golang. Er stellt hauptsächlich vor, wie PHP über JSON RPC kommuniziert. Ich hoffe, dass er für Freunde in Not hilfreich ist.
php kommuniziert mit Golang über JSON RPC
Diese Methode löst die rechenintensiven Anforderungen der PHP-Verarbeitung.
Ich weiß nicht, warum nicht serverübergreifend darauf zugegriffen werden kann. Wenn Sie es wissen, hinterlassen Sie bitte eine Nachricht.
go Service
package main import ( "fmt" "log" "net" "net/rpc" "net/rpc/jsonrpc" ) type Calc struct{} type Args struct { A float64 `json:"a"` B float64 `json:"b"` Op string `json:"op"` } type Reply struct { Msg string `json:"msg"` Data float64 `json:"data"` } // 第一个是参数是获取客户端传来的数据,第二个参数是返回的数据 func (c *Calc) Compute(args Args, reply *Reply) error { var ( msg string = "ok" ) switch args.Op { case "+": reply.Data = args.A + args.B case "-": reply.Data = args.A - args.B case "*": reply.Data = args.A * args.B case "/": if args.B == 0 { msg = "in divide op, B can't be zero" } else { reply.Data = args.A / args.B } default: msg = fmt.Sprintf("unsupported op:%s", args.Op) } reply.Msg = msg if reply.Msg == "ok" { return nil } return fmt.Errorf(msg) } // 启动server端 func main() { err := rpc.Register(new(Calc)) if err != nil { panic(err) } listener, err := net.Listen("tcp", "127.0.0.1:8181") if err != nil { panic(err) } for { conn, err := listener.Accept() if err != nil { log.Println(err) continue } go jsonrpc.ServeConn(conn) } }
php client
rrreereturn resultes
rrreerecommended Lernen: "php Video Tutorial"
Das obige ist der detaillierte Inhalt vonPHP implementiert die Kommunikation mit JSON RPC (Code im Anhang). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!