Yar(yet another RPC framework), RPC框架, 和现有的RPC框架(xml-rpc, soap)不同, 这是一个轻量级的框架, 支持多种打包协议(msgpack, json, php), 并且最重要的一个特点是, 它是可并行化的…

特征

  1. 快速,简单,简单
  2. 并发RPC调用
  3. 支持多个数据包装器(内置php,json,msgpack)
  4. 支持多种传输协议(http实现,稍后将支持tcp / unix)
  5. 详细的调试信息

环境准备

作者要求至少满足以下条件

  1. PHP 5.2+
  2. Curl
  3. Json
  4. Msgpack (Optional): 新型二进制打包协议比json和xml快很多,和序列化的效率差不多

环境安装

  1. 安装yar
1
pecl install yar
  1. 安装msgpack
1
pecl install msgpack
  1. 运行时配置
1
2
3
4
5
6
7
yar.timeout //默认5000(ms)
yar.connect_timeout //默认值1000(ms)
yar.packager //默认“php”,当使用--enable-msgpack然后默认“msgpack”构建时,它应该是“php”,“json”,“msgpack”
yar.debug //默认关闭
yar.expose_info //默认为On,是否输出GET请求的API信息
yar.content_type //默认的“application / octet-stream”
yar.allow_persistent //默认关闭

编写第一个server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Api {
/**
* 测试Name
* @param $key
* @param $value
* @return mixed
*/
public function getName($key, $value= 'foo'){
return $value;
}

public function getB($key) {

}
}

$service = new Yar_Server(new Api());
$service->handle();

直接访问网页可以看到对应的内容已经展现出来了

运行效果

编写第一个客户端请求rpc接口

1
2
3
$client = new Yar_Client("https://admin.myhost.top/Api/");
$result = $client->getName("key","my value");
var_dump($result);

请求后可以获得如下结果

1
string(8) "my value"

至此一个简单的rpc功能完成了,后续会学习更深层的使用方式