今天小编给大家分享一下PHP如何通过JSON rpc与Go通讯的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。php 通过 J
今天小编给大家分享一下PHP如何通过JSON rpc与Go通讯的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
php 通过 JSON RPC 与 golang 通讯
此方法为解决php处理计算密集型需求。
go 服务
package mainimport ("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.Bcase "-":reply.Data = args.A - args.Bcase "*":reply.Data = args.A * args.Bcase "/":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 客户端
public function Call($method, $params) { $this->conn = fsockopen('127.0.0.1', 8181, $errno, $errstr, 3); if (!$this->conn) { return false; } $err = fwrite($this->conn, json_encode(array( 'method' => $method, 'params' => array($params), 'id' => 12345, ))."\n"); if ($err === false) return false; stream_set_timeout($this->conn, 0, 3000); $line = fgets($this->conn); if ($line === false) { return NULL; } return json_decode($line,true); } public function Test() { //访问结构体 Calc 下 Compute 方法 $res = $this->Call("Calc.Compute",array('A'=>1,'B'=>2,'Op'=>'+')); return $res; }
返回结果
{ "id": 12345, "result": { "msg": "ok", "data": 3 }, "error": null}
以上就是“php如何通过JSON RPC与go通讯”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网PHP编程频道。
--结束END--
本文标题: php如何通过JSON RPC与go通讯
本文链接: https://www.lsjlt.com/news/348434.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
一口价域名售卖能注册吗?域名是网站的标识,简短且易于记忆,为在线用户提供了访问我们网站的简单路径。一口价是在域名交易中一种常见的模式,而这种通常是针对已经被注册的域名转售给其他人的一种方式。
一口价域名买卖的过程通常包括以下几个步骤:
1.寻找:买家需要在域名售卖平台上找到心仪的一口价域名。平台通常会为每个可售的域名提供详细的描述,包括价格、年龄、流
443px" 443px) https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294.jpg https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294-768x413.jpg 域名售卖 域名一口价售卖 游戏音频 赋值/切片 框架优势 评估指南 项目规模
0