炬哥技术博客

workerman-jsonrpc开箱即用

炬哥 2024年05月30日 Workerman 1536 0

QQ截图20240530151710.jpg

workerman 是一个高性能的PHP socket服务框架,开发者可以在这个框架下开发各种网络应用,例如Rpc服务、聊天室、游戏等。

workerman 具有以下特性:

# 多进程
# 支持TCP/UDP
# 支持各种应用层协议
# 使用libevent事件轮询库,支持高并发
# 支持文件更新检测及自动加载
# 支持服务平滑重启
# 支持telnet远程控制及监控
# 支持异常监控及告警
# 支持长连接
# 支持以指定用户运行worker进程

安装

git clone https://github.com/walkor/workerman-JsonRpc
composer install

启动停止

# 启动
php start.php start -d
# 重启启动
php start.php restart
# 平滑重启/重新加载配置
php start.php reload
# 查看服务状态
php start.php status
# 停止
php start.php stop

RPC应用使用方法

服务端:

服务端每个类提供一组服务,类文件默认放在Applications/JsonRpc/Services目录下。

客户端实际上是远程调用这些类的静态方法。例如:

<?php
RpcClient::instance('User')->getInfoByUid($uid);

调用的是Applications/JsonRpc/Services/User.php 中 User类的getInfoByUid方法。

User.php文件类似这样

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

如果你想要增加一组服务,可以在这个目录下增加类文件即可。

客户端同步调用:

<?php
include_once 'yourClientDir/RpcClient.php';
$address_array = array(
          'tcp://127.0.0.1:2015',
          'tcp://127.0.0.1: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.1: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);
// ...

rpc监控页面

rpc监控页面地址:http://ip:55757


打赏 支付宝打赏 微信打赏

声明:本文由发布,如需转载请注明出处。

发布评论

分享到:

炬哥技术博客

欢迎炬哥微信号:4508175 (左侧二维码扫一扫)

Hyperf框架快速使用
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,您可以吐槽或者留言。