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"
}

配置

  1. 在 config/app.php 注册 ServiceProvider 和 Facade (Laravel 5.5 无需手动注册)

    'providers' => [
    // ... Zhuqipeng\LaravelHprose\ServiceProvider::class,
    ]
    'aliases' => [
    // ... 'LaravelHproseMethodManage' => Zhuqipeng\LaravelHprose\Facades\HproseMethodManage::class,
    ]
  2. 配置.env文件

    监听地址列表,字符串json格式数组


    HPROSE_URIS=["tcp://0.0.0.0:1314"]

    是否启用demo方法,true开启 false关闭,开启后将自动对外发布一个远程调用方法 demo

    客户端可调用:$client->demo()


    HPROSE_DEMO=true // true or false
  3. 创建配置和路由文件:

    ```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框架)的更多相关文章

  1. NetCore平台下使用RPC框架Hprose

    NetCore下使用RPC框架Hprose https://www.jianshu.com/p/c903fca44d5d Hprose是国内非常优秀的RPC框架,和其它RPC框架比较起来,其它框架一般 ...

  2. php中流行的rpc框架详解

    什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 我的官方群点击此处. 通常我们调用一个php中的方法,比如这样一个函数方 ...

  3. 微博轻量级RPC框架Motan

    Motan 是微博技术团队研发的基于 Java 的轻量级 RPC 框架,已在微博内部大规模应用多年,每天稳定支撑微博上亿次的内部调用.Motan 基于微博的高并发和高负载场景优化,成为一套简单.易用. ...

  4. 基于 SOA 概念 RPC 框架 的 消息中心 云部署 设计 漫谈

    一.背景 假设有一个系统的最大并发量有2000TPS左右.同时该系统有闲时和忙时,希望可以随时进行拓展和削减服务能力,以节省服务器费用开销. 该系统能提供站内消息.短信.app消息.邮箱的一个消息系统 ...

  5. 微博轻量级RPC框架Motan正式开源:支撑千亿调用

    支撑微博千亿调用的轻量级 RPC 框架 Motan 正式开源了,项目地址为https://github.com/weibocom/motan. 微博轻量级RPC框架Motan正式开源 Motan 是微 ...

  6. 性能工具之Jmeter压测Hprose RPC服务

    概述 Hprose(High Performance Remote Object Service Engine),国人开发的一个远程方法调用的开源框架.它是一个先进的轻量级的跨语言跨平台面向对象的高性 ...

  7. 这次我设计了一款TPS百万级别的分布式、高性能、可扩展的RPC框架

    作者:冰河 博客地址:https://binghe001.github.io 大家好,我是冰河~~ 没错,这次冰河又要搞事情了,这次准备下手的是RPC框架项目.为什么要对RPC框架项目下手呢,因为在如 ...

  8. RPC框架实现 - 通信协议篇

    RPC(Remote Procedure Call,远程过程调用)框架是分布式服务的基石,实现RPC框架需要考虑方方面面.其对业务隐藏了底层通信过程(TCP/UDP.打包/解包.序列化/反序列化),使 ...

  9. 一个轻量级分布式RPC框架--NettyRpc

    1.背景 最近在搜索Netty和Zookeeper方面的文章时,看到了这篇文章<轻量级分布式 RPC 框架>,作者用Zookeeper.Netty和Spring写了一个轻量级的分布式RPC ...

  10. RPC框架性能基本比较测试

    RPC框架:gRPC.Thrift.Wildfly.Dubbo 原文链接:http://www.open-open.com/lib/view/open1426302068107.html gRPC是G ...

随机推荐

  1. shell EOF注意点

    当sqlplus与shell交互的时候我们这么用 su - oracle -c "sqlplus / as sysdba<<EOF select * from gv($insta ...

  2. BasePath问题-nginx负载均衡配置

    在配置nginx+tomcat好后.将项目加入到webapps中.发现訪问主页时,css与js訪问不到,导致主页布局出错.细致分析原因后发现css与js的地址是basePath得出的.而basePat ...

  3. 无损压缩算法历史——熵编码是最早出现的,后来才有Lzx这些压缩算法

    Lossless   Entropy type Unary Arithmetic Asymmetric Numeral Systems Golomb Huffman  Adaptive Canonic ...

  4. B1295 [SCOI2009]最长距离 最短路

    就是一道最短路的裸题,直接跑spfa就行了.(spfa死了) 最后在答案处判断是否障碍物太多,然后就直接找最大值就行. (数据特别水,我错误算法60) 题干: Description windy有一块 ...

  5. Java-java-com-util-common-service:TreeService.java

    ylbtech-Java-java-com-util-common-service:TreeService.java 1.返回顶部 1. package com.shineyoo.manager.ut ...

  6. 杂项-人物:Alan cooper

    ylbtech-杂项-人物:Alan cooper Alan Cooper ,“VB之父”“交互设计之父”,荣获视窗先锋奖(Microsoft Windows Pioneer)和软件梦幻奖(Softw ...

  7. 2-2 第二天 利用 QQ 浏览器代理调试端口

    在没有域名服务器的情况下微信代理的方案 echo "api_key: N3DYn5356kYDvcd67fRxoecKxQV7fTE0" > ~/.ultrahook gem ...

  8. 第16课 “远程 Git文档库” 的基础操作

    16-1  “远程Git文档库”  的功能 如果  “本地Git文档库” 和  “远程Git文档库”  是存储在不同的计算机中,它们之前传送数据可以通过HTTP/HTTPS.SSH.GIT proto ...

  9. PCB决策引擎:多维决策表转决策树

    准备设计一个PCB使用的决策引擎,需要用到决策表,而单维决策表不能满足业务要求, 这里主要是为了实现:用户编辑的是决策表,实际底层存储的是树结构,树的的各个节点挂上业务决策逻辑. 这里将多维决策表转决 ...

  10. Cookie、Token与Session介绍(非原创)

    文章大纲 一.Cookie介绍二.Token介绍三.Session介绍四.Token.Cookie与Session比较五.参考文章   一.Cookie介绍 1. Cookie是什么 cookie机制 ...