workerman-json-rpc PHP JSON RPC 框架 项目简介
一款使用PHP开发的高性能Json Rpc框架,框架使用TCP/IP协议直接传输json数据,系统集成统计监控模块,开发部署维护非常简。workerman-json-rpc 包含了服务端和客户端。特性: 使用PHP开发,与PHP紧密结合 PHP多进程,充分利用服务器多cpu资源 支持libevent事件轮询库,支持高并发 支持服务平滑重启,热升级程序,不影响用户 支持PHP文件更新检测及自动加载 使用JSON作为协议,开发调试非常方便 集成统计监控模块,方便查看服务调用量、成功率、耗时等情况 自带PHP客户端,支持异步并发调用,实现并行计算 独立运行,不依赖nginx、php-fpm、apache等容器 安装部署超级方便,下载解压后启动服务即可使用 启动界面:自带的监控模块: 服务端开发示例(例如User服务) 创建文件./applications/JsonRpc/Services/User.php<?php
class User
{
public static function getInfoByUid($uid)
{
// ....
}
public static function getEmail($uid)
{
// ...
}
} 客户端使用示例 客户端同步调用和异步调用// 配置服务端列表,站点入口统一配置一次即可
RpcClient::config(array(
'tcp://127.0.0.1:2015',
'tcp://127.0.0.1:2015'
));
// 获取实例
$user_client = RpcClient::instance('User');
// ====同步调用方法示例====
$ret_sync = $user_client->getInfoByUid($uid);
// ==== 异步调用方法示例 ====
// 异步调用User::getInfoByUid方法
$user_client->asend_getInfoByUid($uid);
// 异步调用User::getEmail方法
$user_client->asend_getEmail($uid);
这里是其它的业务代码,此时服务端User::getInfoByUid、User::getEmail
两个方法正在并发执行,调用者此时可以继续做其它业务逻辑
.........业务逻辑...........
.........业务逻辑...........
// 需要数据的时候异步获取数据
$ret_async1 = $user_client->arecv_getEmail($uid);
$ret_async2 = $user_client->arecv_getInfoByUid($uid);
class User
{
public static function getInfoByUid($uid)
{
// ....
}
public static function getEmail($uid)
{
// ...
}
} 客户端使用示例 客户端同步调用和异步调用// 配置服务端列表,站点入口统一配置一次即可
RpcClient::config(array(
'tcp://127.0.0.1:2015',
'tcp://127.0.0.1:2015'
));
// 获取实例
$user_client = RpcClient::instance('User');
// ====同步调用方法示例====
$ret_sync = $user_client->getInfoByUid($uid);
// ==== 异步调用方法示例 ====
// 异步调用User::getInfoByUid方法
$user_client->asend_getInfoByUid($uid);
// 异步调用User::getEmail方法
$user_client->asend_getEmail($uid);
这里是其它的业务代码,此时服务端User::getInfoByUid、User::getEmail
两个方法正在并发执行,调用者此时可以继续做其它业务逻辑
.........业务逻辑...........
.........业务逻辑...........
// 需要数据的时候异步获取数据
$ret_async1 = $user_client->arecv_getEmail($uid);
$ret_async2 = $user_client->arecv_getInfoByUid($uid);