一款使用PHP开发的高性能Json Rpc框架,框架使用TCP/IP协议直接传输json数据,系统集成统计监控模块,开发部署维护非常简。workerman- json-rpc 包含了服务端和客户端。
特性:
使用PHP开发,与PHP紧密结合
PHP 多进程 ,充分利用服务器多cpu资源
支持 libevent 事件轮询库,支持高并发
支持服务 平滑重启 ,热升级程序,不影响用户
支持PHP 文件更新检测 及自动加载
使用 JSON 作为协议,开发调试非常方便
集成统计监控模块,方便查看服务调用量、成功率、耗时等情况
自带PHP客户端, 支持异步并发调用,实现并行计算
独立运行 ,不依赖nginx、php-fpm、apache等容器
安装部署超级方便,下载解压后启动服务即可使用
启动界面:
自带的监控模块:
服务端开发示例(例如User服务)
<?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);