文档章节

Golang和php通信

anoty
 anoty
发布于 2016/09/27 23:01
字数 272
阅读 463
收藏 3

不同语言之间的通信方式有很多种,这里我介绍一种最简单通信方式,json-rpc。

Golang自带json-rpc包,使用起来十分简单,示例如下,提供一个简单echo server。

package main

import (
	"fmt"
	"net"
	"net/rpc"
	"net/rpc/jsonrpc"
)

type Serve struct {

}

func (s *Serve) Echo(a *int, r *int) error {
	*r = 1
	return nil
}

func main() {
	tcpAddr, err := net.ResolveTCPAddr("tcp", ":9001");
	if err != nil {
		fmt.Println(err)
		return
	}

	l, err := net.ListenTCP("tcp", tcpAddr)
	if err != nil {
		fmt.Println(err)
		return
	}

	serve := &Serve{}
	rpc.Register(serve)
	for {
		conn, err := l.Accept()
		if err != nil {
			fmt.Println(err)
			continue
		}
		go jsonrpc.ServeConn(conn)
	}
}

php 客户端代码,示例如下。

$conn = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$conn) {
    return FALSE;
}
socket_set_option($conn, SOL_SOCKET, SO_SNDTIMEO, array(
    "sec" => 0,
    "usec" => 50000
));
$result = socket_connect($conn, '127.0.0.1', 9001);
$s = time();
$w = ['id' => time(), 'params' => [1], 'method' => 'Serve.Echo'];

socket_write($conn, json_encode($w));
$r = socket_read($conn, 1024);
socket_close($conn);

echo $r;

就这样。

更多架构、PHP、GO相关踩坑实践技巧请关注我的公众号:PHP架构师

© 著作权归作者所有

anoty
粉丝 29
博文 50
码字总数 30181
作品 0
浦东
私信 提问
PHP的异步并行网络扩展Swoole已发布1.7.5版本

PHP的异步并行网络扩展Swoole今天发布了最新的1.7.5版本。 项目主页:http://www.swoole.com/ 文档页面:http://wiki.swoole.com/ 源代码:https://github.com/swoole/swoole-src 1.7.4版本:...

matyhtf
2014/09/10
3K
31
B站直播:使用Golang重构,流量最大的推送功能

1 悲剧直播推送功能 ****** 1.1 B站直播推送功能的困境 ***B站直播有个推送功能,就是这里,看到那个红色的数字没有,显示你关注的主播开播人数。 然后每个进入B站的用户,不管是不是直播的观...

anoty
2016/10/22
1K
1
NOSQL数据库--xuncache

xuncache 是免费开源的NOSQL(内存数据库) 采用golang开发,简单易用而且 功能强大(就算新手也完全胜任)、性能卓越能轻松处理海量数据,可用于缓存系统. 目前版本 version 0.3 前期它是活跃的 ...

孙彦欣
2013/04/08
9.3K
4
实时消息通信平台--Centrifugo

Centrifugo 是一个用 Golang 实现的基于 Websocket 或者 SockJS 的实时通信平台。 支持数千个同时连接,提供基于频道的出版/订阅模式。PUB/SUB 容易和现有系统集成– 不改变已有后端情况下为...

匿名
2017/02/11
9.6K
12
Node.js与Golang使用感受与小结【一】

Node.js与Golang使用感受与小结 目录 一、互联网的基石TCP/IP协议 二、HTTP服务器编写与编程语言无关 三、构建HTTP服务器需要掌握的知识点 四、HTTP协议基础 五、Node.js简介 六、是前端选择...

念念之间
2013/05/22
2.7K
8

没有更多内容

加载失败,请刷新页面

加载更多

15、SpringMVC进行json交互

SpringMVC进行json交互 json数据格式在接口调用中、html页面中较常用,json格式比较简单,解析还比较方便。 请求json、输出json。要求请求的是json串,前端页面中需要将请求的内容转成json,...

快乐的瓶子
30分钟前
7
0
delphi版插apc杀进程驱动源码

从c代码转的,备份一下,里面有硬编码unit MyDriver;{$HINTS OFF}{$WARNINGS OFF}interfaceusesnt_status, ntoskrnl, native, winioctl, fcall, macros;typeTKILL = ...

simpower
34分钟前
4
0
带你上手一款下载超 10 万次的 IDEA 插件

作者 | 倪超(银时) 阿里云开发者工具产品专家 本文整理自 11 月 7 日社群分享,每月 2 场高质量分享,点击加入社群。 导读:Cloud Toolkit 是本地 IDE 插件,帮助开发者更高效地开发、测试...

阿里云官方博客
34分钟前
4
0
GMAT语法7个常考重要考点分析

GMAT语法考点多,并非所有考点都值得重点关注。实际上GMAT语法存在一些高频考点,考生需要优先掌握它们才能更好地保证得分。同时GMAT备考中大家还需要培养连续做题的耐力。下面小编就来做具体...

bole6
39分钟前
4
0
最佳实践 | RDS & POLARDB归档到X-Pack Spark计算

X-Pack Spark服务通过外部计算资源的方式,为Redis、Cassandra、MongoDB、HBase、RDS存储服务提供复杂分析、流式处理及入库、机器学习的能力,从而更好的解决用户数据处理相关场景问题。 RD...

一肥仔
40分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部