介绍
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_PACKAGERYAR_OPT_PERSISTENTYAR_OPT_TIMEOUTYAR_OPT_CONNECT_TIMEOUTYAR_OPT_HEADER
简单示例
Server 端
服务器端提供算术服务
1 |
|
通过 Get 请求, 从浏览器端访问,可以看到自动生成的 API 文档

Client 端调用
1 |
|
输出如下:
1 | int(3) |
Client 端异步调用
1 |
|