laravel-hprose(rpc框架)
Laravel-hprose
基于 hprose/hprose-php 开发的Laravel扩展:laravel-hprose
版本要求
Laravel>=5.2
安装
```composer require "zhuqipeng/laravel-hprose:v1.0-alpha"
```
或者编辑composer.json
"require": {
"zhuqipeng/laravel-hprose": "v1.0-alpha"
}
配置
在 config/app.php 注册 ServiceProvider 和 Facade (Laravel 5.5 无需手动注册)
'providers' => [
// ... Zhuqipeng\LaravelHprose\ServiceProvider::class,
]
'aliases' => [
// ... 'LaravelHproseMethodManage' => Zhuqipeng\LaravelHprose\Facades\HproseMethodManage::class,
]
配置.env文件
监听地址列表,字符串json格式数组
HPROSE_URIS=["tcp://0.0.0.0:1314"]
是否启用demo方法,true开启 false关闭,开启后将自动对外发布一个远程调用方法
demo
客户端可调用:$client->demo()
HPROSE_DEMO=true // true or false
创建
配置
和路由
文件:```php artisan vendor:publish --provider="Zhuqipeng\LaravelHprose\ServiceProvider"
```应用根目录下的
config
目录下会自动生成新文件hprose.php
应用根目录下的
routes
目录下会自动生成新文件rpc.php
使用
路由
和
laravel
路由的用法相似,基于 dingo/api 的路由代码上做了简单修改
路由文件
routes/rpc.php
添加路由方法
\LaravelHproseRouter::add(string $name, string|callable $action, array $options = []);
- string $name 可供客户端远程调用的方法名
- string|callable $action 类方法,格式:AppControllersUser@update
- array $options 是一个关联数组,它里面包含了一些对该服务函数的特殊设置,详情请参考hprose-php官方文档介绍 链接
发布远程调用方法 getUserByName
和 update
\LaravelHproseRouter::add('getUserByName', function ($name) {
return 'name: ' . $name;
});
\LaravelHproseRouter::add('userUpdate', 'App\Controllers\User@update', ['model' => \Hprose\ResultMode::Normal]);
控制器
<?php
namespace App\Controllers;
class User
{
public function update($name)
{
return 'update name: ' . $name;
}
}
客户端调用
$client->getUserByName('zhuqipeng');
$client->userUpdate('zhuqipeng');
路由组
\LaravelHproseRouter::group(array $attributes, callable $callback);
- array $attributes 属性 ['namespace' => '', 'prefix' => '']
- callable $callback 回调函数
\LaravelHproseRouter::group(['namespace' => 'App\Controllers'], function ($route) {
$route->add('getUserByName', function ($name) {
return 'name: ' . $name;
});
$route->add('userUpdate', 'User@update');
});
客户端调用
$client->getUserByName('zhuqipeng');
$client->userUpdate('zhuqipeng');
前缀
\LaravelHproseRouter::group(['namespace' => 'App\Controllers', 'prefix' => 'user'], function ($route) {
$route->add('getByName', function ($name) {
return 'name: ' . $name;
});
$route->add('update', 'User@update');
});
客户端调用
$client->user->getByName('zhuqipeng');
$client->user->update('zhuqipeng');
// 或者
$client->user_getByName('zhuqipeng');
$client->user_update('zhuqipeng');
启动服务
```php artisan hprose:socket_server
```
原文地址:https://segmentfault.com/a/1190000016145308
laravel-hprose(rpc框架)的更多相关文章
- NetCore平台下使用RPC框架Hprose
NetCore下使用RPC框架Hprose https://www.jianshu.com/p/c903fca44d5d Hprose是国内非常优秀的RPC框架,和其它RPC框架比较起来,其它框架一般 ...
- php中流行的rpc框架详解
什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 我的官方群点击此处. 通常我们调用一个php中的方法,比如这样一个函数方 ...
- 微博轻量级RPC框架Motan
Motan 是微博技术团队研发的基于 Java 的轻量级 RPC 框架,已在微博内部大规模应用多年,每天稳定支撑微博上亿次的内部调用.Motan 基于微博的高并发和高负载场景优化,成为一套简单.易用. ...
- 基于 SOA 概念 RPC 框架 的 消息中心 云部署 设计 漫谈
一.背景 假设有一个系统的最大并发量有2000TPS左右.同时该系统有闲时和忙时,希望可以随时进行拓展和削减服务能力,以节省服务器费用开销. 该系统能提供站内消息.短信.app消息.邮箱的一个消息系统 ...
- 微博轻量级RPC框架Motan正式开源:支撑千亿调用
支撑微博千亿调用的轻量级 RPC 框架 Motan 正式开源了,项目地址为https://github.com/weibocom/motan. 微博轻量级RPC框架Motan正式开源 Motan 是微 ...
- 性能工具之Jmeter压测Hprose RPC服务
概述 Hprose(High Performance Remote Object Service Engine),国人开发的一个远程方法调用的开源框架.它是一个先进的轻量级的跨语言跨平台面向对象的高性 ...
- 这次我设计了一款TPS百万级别的分布式、高性能、可扩展的RPC框架
作者:冰河 博客地址:https://binghe001.github.io 大家好,我是冰河~~ 没错,这次冰河又要搞事情了,这次准备下手的是RPC框架项目.为什么要对RPC框架项目下手呢,因为在如 ...
- RPC框架实现 - 通信协议篇
RPC(Remote Procedure Call,远程过程调用)框架是分布式服务的基石,实现RPC框架需要考虑方方面面.其对业务隐藏了底层通信过程(TCP/UDP.打包/解包.序列化/反序列化),使 ...
- 一个轻量级分布式RPC框架--NettyRpc
1.背景 最近在搜索Netty和Zookeeper方面的文章时,看到了这篇文章<轻量级分布式 RPC 框架>,作者用Zookeeper.Netty和Spring写了一个轻量级的分布式RPC ...
- RPC框架性能基本比较测试
RPC框架:gRPC.Thrift.Wildfly.Dubbo 原文链接:http://www.open-open.com/lib/view/open1426302068107.html gRPC是G ...
随机推荐
- CSS3:box-sizing:不再为盒子模型而烦恼
题外话: W3C奉行的标准,就是content-box,就是须要计算边框,填充还有内容的;可是就我个人而言, 比較喜欢的是传统IE6时候的怪异模式,不用考虑容器是否会被撑开(打乱布局); 盒子模型差异 ...
- 2749: [HAOI2012]外星人
首先像我一样把柿子画出来或者看下hint 你就会发现其实是多了个p-1这样的东东 然后除非是2他们都是偶数,而2就直接到0了 算一下2出现的次数就好 #include<cstdio> #i ...
- mysql数据库操作(3)
1.在查询结果中不显示重复记录 查询时不显示重复记录主要应用了 DISTINCT 关键字,该关键字用于删除重复记录. 在实现查询操作时,如果查询的选择列表中包含一个表的主键,那么每个查询中的记录都将是 ...
- hdoj--1418--抱歉(水题)
抱歉 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- 原生JS---6
原生js学习笔记6——事件 事件对象 鼠标事件 event.clientX在可视区中,鼠标点击的x坐标 event.clientY在可视区中,鼠标点击的y坐标 示例: <!DOCTYPE htm ...
- BZOJ 4525 二分
思路: 满足二分性质... 二分一下 就完了 //By SiriusRen #include <cstdio> #include <algorithm> using ...
- bug,实现类未找到service
- Dubbo的@Reference和@Service说明---1Reference用在消费者2Service用在提供者【import com.alibaba.dubbo.config.annotation.Service;】
@Reference 用在消费端,表明使用的是服务端的什么服务@RestControllerpublic class RemoteUserController { @Reference(version ...
- IIS7部署网站的一些细节问题。
1.不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况. 这个错误的原因是在 IIS 7中 采用了更安全的 web.config 管理机制,默认情况下会锁住配置项.要取消锁定可以以 ...
- CXF-JAX-RS开发(一)入门案例
一.简介 资源驱动.基于HTTP协议[按照标准指定URL,就可以访问数据]以XML|JSON格式传输数据. 二.quickstart 1.创建maven project[Packaging:jar] ...