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 ...
随机推荐
- shell EOF注意点
当sqlplus与shell交互的时候我们这么用 su - oracle -c "sqlplus / as sysdba<<EOF select * from gv($insta ...
- BasePath问题-nginx负载均衡配置
在配置nginx+tomcat好后.将项目加入到webapps中.发现訪问主页时,css与js訪问不到,导致主页布局出错.细致分析原因后发现css与js的地址是basePath得出的.而basePat ...
- 无损压缩算法历史——熵编码是最早出现的,后来才有Lzx这些压缩算法
Lossless Entropy type Unary Arithmetic Asymmetric Numeral Systems Golomb Huffman Adaptive Canonic ...
- B1295 [SCOI2009]最长距离 最短路
就是一道最短路的裸题,直接跑spfa就行了.(spfa死了) 最后在答案处判断是否障碍物太多,然后就直接找最大值就行. (数据特别水,我错误算法60) 题干: Description windy有一块 ...
- Java-java-com-util-common-service:TreeService.java
ylbtech-Java-java-com-util-common-service:TreeService.java 1.返回顶部 1. package com.shineyoo.manager.ut ...
- 杂项-人物:Alan cooper
ylbtech-杂项-人物:Alan cooper Alan Cooper ,“VB之父”“交互设计之父”,荣获视窗先锋奖(Microsoft Windows Pioneer)和软件梦幻奖(Softw ...
- 2-2 第二天 利用 QQ 浏览器代理调试端口
在没有域名服务器的情况下微信代理的方案 echo "api_key: N3DYn5356kYDvcd67fRxoecKxQV7fTE0" > ~/.ultrahook gem ...
- 第16课 “远程 Git文档库” 的基础操作
16-1 “远程Git文档库” 的功能 如果 “本地Git文档库” 和 “远程Git文档库” 是存储在不同的计算机中,它们之前传送数据可以通过HTTP/HTTPS.SSH.GIT proto ...
- PCB决策引擎:多维决策表转决策树
准备设计一个PCB使用的决策引擎,需要用到决策表,而单维决策表不能满足业务要求, 这里主要是为了实现:用户编辑的是决策表,实际底层存储的是树结构,树的的各个节点挂上业务决策逻辑. 这里将多维决策表转决 ...
- Cookie、Token与Session介绍(非原创)
文章大纲 一.Cookie介绍二.Token介绍三.Session介绍四.Token.Cookie与Session比较五.参考文章 一.Cookie介绍 1. Cookie是什么 cookie机制 ...