承接 imiphp/imi-hprose 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

imiphp/imi-hprose

Composer 安装命令:

composer require imiphp/imi-hprose

包简介

在 imi 框架中集成 Hprose 服务开发

README 文档

README

Latest Version Php Version Swoole Version IMI License

介绍

在 imi 框架中集成 Hprose 服务开发,目前支持TCPUnix 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->方法名(参数);
	}
}

免费技术支持

QQ群:17916227 点击加群,如有问题会有人解答和修复。

运行环境

版权信息

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 我们能提供哪些服务?
定制开发 / 二次开发

基于 imiphp/imi-hprose 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 27
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 6
  • 点击次数: 21
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 5
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MulanPSL-2.0
  • 更新时间: 2018-12-26