imiphp/imi-hprose
Composer 安装命令:
composer require imiphp/imi-hprose
包简介
在 imi 框架中集成 Hprose 服务开发
README 文档
README
介绍
在 imi 框架中集成 Hprose 服务开发,目前支持TCP、Unix Socket协议。
未来将实现:中间件、过滤器、Http 协议、WebSocket 协议……
本仓库仅用于浏览,不接受 issue 和 Pull Requests,请前往:https://github.com/imiphp/imi
Composer
本项目可以使用composer安装,遵循psr-4自动加载规则,在你的 composer.json 中加入下面的内容:
{
"require": {
"imiphp/imi-hprose": "~2.0.0"
}
}
然后执行 composer update 安装。
服务端
在项目 config/config.php 中配置:
[
'components' => [
// 引入RPC组件以及本组件
'Rpc' => 'Imi\Rpc',
'Hprose' => 'Imi\Hprose',
],
]
如果你用主服务器:
[
// 主服务器配置
'mainServer' => [
'namespace' => 'XXX\MainServer', // 你的命名空间
'type' => 'Hprose', // 必须设为 Hprose
'port' => 8080,
],
]
如果你用子服务器:
[
// 子服务器(端口监听)配置
'subServers' => [
// 子服务器名
'XXX' => [
'namespace' => 'XXX\Hprose', // 你的命名空间
'type' => 'Hprose', // 必须设为 Hprose
'port' => 50001,
]
],
]
控制器基类
Imi\Rpc\Controller\RpcController
控制器注解
\Imi\Rpc\Route\Annotation\RpcController
用法:
@RpcController
别名前缀:@RpcController('a_b_')
动作注解
\Imi\Rpc\Route\Annotation\RpcAction
无参
路由注解
\Imi\Hprose\Route\Annotation\HproseRoute
参数:
name路由名称规则。一般也是方法名,如果设置了别名,则最终为别名+方法名mode该设置表示该服务函数返回的结果类型,具体值请参考 Hprose 文档simple该设置表示本服务函数所返回的结果是否为简单数据。默认值为 false。oneway该设置表示本服务函数是否不需要等待返回值。当该设置为 true 时,调用会异步开始,并且不等待结果,立即返回 null 给客户端。默认值为 false。async该设置表示本服务函数是否为异步函数,异步函数的最后一个参数是一个回调函数,用户需要在异步函数中调用该回调方法来传回返回值passContext该属性为 boolean 类型,默认值为 false。具体请参考 Hprose 文档
Hprose 文档参考:https://github.com/hprose/hprose-php/wiki/06-Hprose-服务器#addfunction-%E6%96%B9%E6%B3%95
客户端
连接池配置
[ 'pools' => [ '连接池名' => [ 'sync' => [ 'pool' => [ 'class' => \Imi\Rpc\Client\Pool\RpcClientSyncPool::class, 'config' => [ // 连接池通用,查阅文档 ], ], 'resource' => [ 'clientClass' => \Imi\Hprose\Client\HproseSocketClient::class, 'uris' => 'tcp://127.0.0.1:50001', // 连接地址 // 其它配置 ] ], 'async' => [ 'pool' => [ 'class' => \Imi\Rpc\Client\Pool\RpcClientCoroutinePool::class, 'config' => [ // 连接池通用,查阅文档 ], ], 'resource' => [ 'clientClass' => \Imi\Hprose\Client\HproseSocketClient::class, 'uris' => 'tcp://127.0.0.1:50001', // 连接地址 // 其它配置 ] ], ], ], 'rpc' => [ 'defaultPool' => '连接池名', // 默认连接池名 ], ]
客户端调用
代码调用:
\Imi\Rpc\Client\Pool\RpcClientPool::getService('服务名')->方法名(参数);
注解调用:
class Test { /** * @RpcClient() * * @var \Imi\Rpc\Client\IRpcClient */ protected $rpcClient; /** * @RpcService(serviceName="服务名") * * @var \Imi\Rpc\Client\IService */ protected $xxxRpc; public function aaa() { // 方法一 $this->rpcClient->getService('服务名')->方法名(参数); // 方法二 $this->xxxRpc->方法名(参数); } }
免费技术支持
运行环境
版权信息
imi-hprose 遵循 MIT 开源协议发布,并提供免费使用。
捐赠
开源不求盈利,多少都是心意,生活不易,随缘随缘……
imiphp/imi-hprose 适用场景与选型建议
imiphp/imi-hprose 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 27 次下载、GitHub Stars 达 5, 最近一次更新时间为 2018 年 12 月 26 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 imiphp/imi-hprose 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 imiphp/imi-hprose 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 27
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 6
- 点击次数: 21
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MulanPSL-2.0
- 更新时间: 2018-12-26
