iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php如何通过JSON RPC与go通讯
  • 684
分享到

php如何通过JSON RPC与go通讯

2023-07-05 00:07:19 684人浏览 八月长安
摘要

今天小编给大家分享一下PHP如何通过JSON rpc与Go通讯的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。php 通过 J

今天小编给大家分享一下PHP如何通过JSON rpcGo通讯的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

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文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php如何通过JSON RPC与go通讯
    今天小编给大家分享一下php如何通过JSON RPC与go通讯的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。php 通过 J...
    99+
    2023-07-05
  • php实现通过JSON RPC与go通讯(附代码)
    本篇文章给大家带来了关于php与golang的相关知识,其中主要介绍了php是怎么通过JSON RPC和go进行通讯的,下面一起来看一下,希望对需要的朋友有所帮助。php 通过 JSON RPC 与 golang 通讯此方法为解决php处理...
    99+
    2023-05-14
    php Golang
  • 如何理解PHP与MySQL通讯
    如何理解PHP与MySQL通讯,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在我们的一款WebGame的生产环境中,一次无意的strace抓包时,发现了php与mysql大...
    99+
    2023-06-17
  • PHP 通过引用与通过值传递变量
    在 PHP 中,我们可以通过两种不同的方式将变量传递给函数:按值和按引用。 了解这两种传递变量的方法之间的区别对于编写高效且有效的 PHP 代码很重要。 按值传递变量 默认情况下,PHP 按值将...
    99+
    2024-02-27
  • 如何通过PHP快速解码指定JSON字符串
    这篇文章主要介绍了如何通过PHP快速解码指定JSON字符串,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。首先看一下JSON示例代码,如下:{"Title"...
    99+
    2023-06-20
  • golang函数如何通过channel与goroutine通信?
    go 语言中使用 channel 和 goroutine 通信。创建 channel 后,goroutine 可以通过 Go 语言中通过 channel 与 goroutine 通信...
    99+
    2024-05-01
    channel golang
  • node中如何实现RPC通信
    本篇内容主要讲解“node中如何实现RPC通信”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“node中如何实现RPC通信”吧!什么是RPC?RPC:Remote Procedure Call(远...
    99+
    2023-07-04
  • Vue2.5如何通过json文件读取数据
    这篇文章主要介绍了Vue2.5如何通过json文件读取数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.准备工作1.1 webpack....
    99+
    2024-04-02
  • Android如何通过Retrofit提交Json格式数据
    本文将介绍如何通过retrofit库post一串json格式的数据。首先post的json数据格式如下:{ "Id": "string", "DeviceId": "string", "Name": "string", "SumDistan...
    99+
    2023-05-30
    retrofit json roi
  • 如何通过PHP进行API的设计与开发?
    随着互联网的普及和发展,API(Application Programming Interface,应用程序接口)的概念也越来越广泛地应用在各类软件系统中。API可以定义如何与软件系统的组件进行交互,简化系统的开发和维护,并且提供了更多的可...
    99+
    2023-05-14
    PHP API (应用程序编程接口) 设计与开发
  • 如何通过Ajax进行Post提交Json数据
    这篇文章主要介绍了如何通过Ajax进行Post提交Json数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。js代码$.ajax({&nbs...
    99+
    2024-04-02
  • linux如何通过SSH通道rsync
    ...
    99+
    2024-04-02
  • 如何通过索引优化PHP与MySQL的计算字段和JSON数据的查询?
    引言:在PHP和MySQL开发中,经常会涉及到计算字段和JSON数据的查询需求。然而,由于这两种查询都会带来较高的计算量和数据处理复杂度,如果不加以优化,可能会导致性能下降。本文将介绍如何通过索引优化PHP与MySQL的计算字段和JSON数...
    99+
    2023-10-21
    MySQL PHP 索引优化
  • Flex与Flex swf如何实现通讯
    Flex与Flex swf如何实现通讯,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Flex通讯系列---Flex与Flex swf这里讲述的是在FlexApp...
    99+
    2023-06-17
  • go语言通过结构体生成json示例解析
    目录通过结构体生成json通过map生成jsonjson解析到结构体json解析到map通过结构体生成json buf, err := json.MarshalIndent(s, &...
    99+
    2024-04-02
  • PHP如何通过CURL上传文件
    PHP使用CURL上传文件只需发送一个POST请求就可以了,在请求中设置某个字段为需要上传的文件全路径,并且以“@”开头,然后使用CURL把该变量以POST方式发送到服务器,在服务端即可以从超级全局变量$_FILES中取到相应的上传文件信息...
    99+
    2023-09-01
    php 服务器 开发语言
  • 如何通过PHP获取GET参数
    在Web开发中,PHP是一种流行的后端语言。在使用PHP编写应用程序时,很常见的问题是如何通过GET请求从URL中获取参数。本文将探讨这个问题,讨论如何通过PHP获取GET参数,并介绍一些技巧和注意事项。首先,让我们看一下如何使用PHP获取...
    99+
    2023-05-14
  • HTML中如何通过PHP调用C++
    这篇文章给大家分享的是有关HTML中如何通过PHP调用C++ 的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、在本地服务器目录下新建一个 test 文件夹,在此文件夹中新建文件...
    99+
    2024-04-02
  • PLC通过智能网关,实现HTTP协议的POST/GET请求,与服务端JSON格式双向通讯
            智能网关IGT-DSER集成了多种PLC的原厂协议,方便实现各种PLC与服务端之间的HTTP协议通讯,通过网关的参数配置软件绑定JSON文件的字段与PLC寄存器地址,配置URL,即可通过POST/GET命令,将JSON文件提...
    99+
    2023-09-02
    http json 网络协议 lua 数据库
  • 如何通过循环 JSON 显示 golang 中丢失的键?
    编程网今天将给大家带来《如何通过循环 JSON 显示 golang 中丢失的键?》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常...
    99+
    2024-04-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作