workerman-json-rpc

JSON (JavaScript Object Notation)是一种用于在组件间交互信息的数据交换格式,其是以JavaScript 为基础的数据表示语言。既方便于人的读写习惯,又有利于计算机的解析和生成。

RPC(Remote Procedure Call)是远程调用,既客户端通过某种协议向服务器发起请求并获得结果。RPC使得开发分布式网络程序非常方便,并且能极大限度的将网络系统的各个部分解耦,方便后续开发、维护。

workerman-json-rpc是一个以workerman作为服务器容器,使用Json作为协议简单高效的RPC远程调用框架。

下载

下载Json RPC远程调用框架

Fork on Github  下载ZIP压缩文件 下载5188次

特性

  • 使用PHP开发
  • PHP多进程
  • 支持libevent事件轮询库,支持高并发
  • 支持服务平滑重启
  • 支持PHP文件更新检测及自动加载
  • 使用json作为协议,开发调试非常高效
  • 集成统计监控模块,方便查看服务调用量、成功率、耗时等情况
  • 自带PHP客户端,支持异步并发调用,实现并行计算

服务端开发示例

创建文件./applications/JsonRpc/Services/User.php

<?php
class User
{
    public static function 
getInfoByUid($uid)
    {
        
// ....
    
}

    public static function 
getEmail($uid)
    {
        
// ...
    
}
}

启动服务如图:

php start.php start -d

php json rpc 启动界面

客户端使用示例

客户端文件位置Applications/JsonRpc/Clients/RpcClient.php,拷贝到项目任意位置即可使用

客户端同步调用

<?php
include_once 'yourClientDir/RpcClient.php';

$address_array = array(
          
'tcp://127.0.0.1:2015',
          
'tcp://127.0.0.2:2015'
          
);
// 配置服务端列表
RpcClient::config($address_array);

$uid 567;

// User对应applications/JsonRpc/Services/User.php 中的User类
$user_client RpcClient::instance('User');

// getInfoByUid对应User类中的getInfoByUid方法
$ret_sync $user_client->getInfoByUid($uid);

客户端异步调用

<?php
include_once 'yourClientDir/RpcClient.php';
// 服务端列表
$address_array = array(
  
'tcp://127.0.0.1:2015',
  
'tcp://127.0.0.2:2015'
  
);
// 配置服务端列表
RpcClient::config($address_array);

$uid 567;
$user_client RpcClient::instance('User');

// 异步调用User::getInfoByUid方法
$user_client->asend_getInfoByUid($uid);
// 异步调用User::getEmail方法
$user_client->asend_getEmail($uid);

这里是其它的业务代码
....................
....................

// 需要数据的时候异步接收数据
$ret_async1 $user_client->arecv_getEmail($uid);
$ret_async2 $user_client->arecv_getInfoByUid($uid);

这里是其他业务逻辑

初始化(端口及进程数)

初始化文件位置 ./Applications/JsonRpc/start.php

workerman-json-rpc集成了统计监控模块,界面如下(地址:http://ip:55757 demo

json rpc统计监控系统界面

相关连接

Powered by web-msg-sender!

蜀ICP备13029294号

联系我们
  • QQ群1:257046084(2000人已满)
    QQ群2:137410824(2000人已满)
    QQ群3:527941005(500人已满)
    QQ群4:172789145(2000人已满)
    QQ群5:605328640(2000人)
    游戏开发群:564297822
    商务合作联系QQ:2202055656
    邮箱:walkor@workerman.net