介绍
RPC
(Remote Procedure Call Protocol
)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC
不依赖于具体的网络传输协议,tcp
、udp
等都可以。由于存在各式各样的变换和细节差异,相应的 rpc
也派生出了各式远程过程通信协议。RPC
是跨语言的通信标准,SUN
和微软都有其实现,比如RMI
可以被看作 SUN
对 RPC
的 Java
版本( 实现),而微软的 DCOM
就是建立在 ORPC
协议之上。一言以蔽之,RPC
是协议,而无论是 SUN
的 RMI
还是微软的 DCOM
都是对该协议的不同实现,二者都为编程人员提供了应用PRC技术的程序接口(API`
)。
安装
pecl
安装
yar
是一个 pecl
扩展,因此可以直接 install
:
1 | pecl install yar |
自行编译
1 | /path/to/phpize |
Install Yar with msgpack
首先应该安装 msgpack
扩展
1 | pecl install msgpack |
或者,也可以获取 github
源代码 https://github.com/msgpack/msgpack-php
1 | phpize |
配置项
yar.timeout
处理超时,默认为 5000 (ms)yar.connect_timeout
连接超时,默认为 1000 (ms)yar.packager
//设置yar
的打包工具,默认是 “php
“, 当以--enable-msgpack
构建扩展,则默认值为msgpack
, 它的值可以为 “php
“, “json
“, “msgpack
“yar.debug
默认是Off
, 打开的时候,Yar
会把请求过程的日志都打印出来(到stderr
)yar.expose_info
默认是On
, 如果关闭, 则当通过浏览器访问Server
的时候, 不会出现Server Info
信息yar.content_type
默认是 “application/octet-stream
“yar.allow_persistent
默认是Off
使用
常量
YAR_VERSION
:YAR
的当前版本YAR_OPT_PACKAGER
YAR_OPT_PERSISTENT
YAR_OPT_TIMEOUT
YAR_OPT_CONNECT_TIMEOUT
YAR_OPT_HEADER
简单示例
Server
端
服务器端提供算术服务
1 |
|
通过 Get
请求, 从浏览器端访问,可以看到自动生成的 API
文档
Client
端调用
1 |
|
输出如下:
1 | int(3) |
Client
端异步调用
1 |
|