该项目支持 Laravel 及非 Laravel 项目使用,支持 php >= 5.3 版本语法

注: 以下内容,默认你对 Hprose 已经有了一定了解。内容基于 Laravel 项目介绍。

安装

服务端安装即可,客户端可不安装

pecl install hprose

安装扩展包

composer require flc/laravel-hprose

配置

服务提供者与门面

Laravel >= 5.5 已增加包自动发现。旧版本,请手动设置

在 config/app.php 文件下加入服务提供者

'providers' => [

...

Flc\Laravel\Hprose\HproseServiceProvider::class,

]

在 config/app.php 文件下加入门面

'aliases' => [

...

'HproseRoute' => Flc\Laravel\Hprose\Facades\HproseRoute::class,

'HproseServer' => Flc\Laravel\Hprose\Facades\HproseServer::class,

'HproseClient' => Flc\Laravel\Hprose\Facades\HproseClient::class,

]

初始化文件

php artisan hprose:generator

执行完成后,会分别生成以下文件:

路由服务提供者:app/Providers/HproseRouteServiceProvider.php

路由文件:routes/hprose.php (该路由文件非 Laravel 路由,下文简称 Hprose 路由)

Hprose 路由控制器根目录默认在:app/Http/Controllers/Hprose 目录下,可自行在 app/Providers/HproseRouteServiceProvider.php 调整

在 config/app.php 文件下加入默认的 Hprose 路由服务提供者

'providers' => [

...

app\Providers\HproseRouteServiceProvider::class,

]

发布配置

php artisan vendor:publish --provider="Flc\Laravel\Hprose\HproseServiceProvider"

执行后,会生成配置文件路径:/config/hprose.php

使用

配置说明

配置文件路径:/config/hprose.php

return [

'server' => [

'default' => 'http',

'connections' => [

'http' => [

'protocol' => 'http',

],

],

],

'client' => [

'default' => 'http',

'connections' => array(

'http' => array(

'protocol' => 'http',

'uri' => 'http://192.168.2.67:9001/api/server', // 此处为服务端的连接地址

'async' => false,

),

),

]

];

目前版本,除客户端配置中的远程服务器地址外,其他配置默认即可

其他均为后续支持 swoole-http、tcp、websocket 等,做提前架设

服务端

增加一个 Laravel 路由,用于启动 Http 服务,如:

Route::any('hprose-server', 'HproseController@server');

对应控制器:

namespace App\Http\Controllers;

use HproseServer;

use HproseRoute;

class HproseController

{

public function server()

{

HproseServer::setRouter(HproseRoute::getRouter())->start();

}

}

Hprose 路由配置

HproseRoute::add('tests', 'Controller@tests');

HproseRoute::add('tests_one', 'Controller@tests')->option(['...']);

Controller@tests 的方法自行定义

客户端

namespace App\Http\Controllers;

use HproseClient;

class HproseController

{

public function client()

{

$result = HproseClient::tests('tests');

$result = HproseClient::connection('other')->tests('tests'); // 其他连接

$result = HproseClient::connection()->tests->one('tests');

print_r($result);

}

}

非 Laravel 项目使用

服务端

$router = new \Flc\Laravel\Hprose\Routing\Router;

$router->group(['prefix' => 'tests', 'namespace' => 'App\\Controllers'], function ($router) {

$router->add('one', 'Controller@one');

$router->add('two', 'Controller@two')->option(['...']);

$router->group(['prefix' => 'group'], function ($router) {

$router->add('one', 'Controller@group_one');

...

});

});

$app = [

'config' => [

'hprose.server.default' => 'http',

'hprose.server.connections' => [

'http' => [

'protocol' => 'http',

],

],

],

];

$server = new \Flc\Laravel\Hprose\Server($app);

$server->setRouter($router)->start();

客户端

$app = [

'config' => [

'hprose.client.default' => 'http',

'hprose.client.connections' => [

'http' => [

'protocol' => 'http',

'uri' => 'http://localhost/server.php',

'async' => false

]

]

]

];

$client = new \Flc\Laravel\Hprose\Client($app);

print_r($client->tests->one('222').PHP_EOL);

捐赠

如果你觉得本扩展对你有帮助,请捐赠以表支持,谢谢~~

微信

支付宝

...

License

MIT

hprose php用户手册,Laravel Hprose RPC 服务相关推荐

  1. PHP 使用 hprose RPC 服务 系列文章之二——Codeigniter3中使用Hprose

    PHP 使用 hprose RPC 服务 系列文章之一--安装扩展 PHP 使用 hprose RPC 服务 系列文章之二--Codeigniter3中使用Hprose PHP 使用 hprose R ...

  2. golang python rpc_grpc - 使用 golang 带你从头撸一套 RPC 服务(一)

    gRPC 是一个高性能.开源和通用的 RPC 框架,面向移动和 HTTP/2 设计,带来诸如双向流.流控.头部压缩.单 TCP 连接上的多复用请求等特.这些特性使得其在移动设备上表现更好,更省电和节省 ...

  3. 深入理解 RPC : 基于 Python 自建分布式高并发 RPC 服务

    RPC(Remote Procedure Call)服务,也即远程过程调用,在互联网企业技术架构中占据了举足轻重的地位,尤其在当下微服务化逐步成为大中型分布式系统架构的主流背景下,RPC 更扮演了重要 ...

  4. NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成...

    原文:NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成 本篇内容属于非实用性(拿来即用)介绍,如对框架设计没兴趣的朋友,请略过. 快一个月没有写博 ...

  5. pe修改rpc服务器不可用,ABBYY FineReader 12出现“RPC服务不可用”怎么办

    原标题:ABBYY FineReader 12出现"RPC服务不可用"怎么办 是一款OCR图文识别软件,可快速方便地将扫描纸质文档.PDF文件和数码相机的图像转换成可编辑.可搜索的 ...

  6. yy神曲url解析php_使用PHP来简单的创建一个RPC服务

    RPC全称为Remote Procedure Call,翻译过来为"远程过程调用".主要应用于不同的系统之间的远程通信和相互调用. 比如有两个系统,一个是PHP写的,一个是JAVA ...

  7. Laravel开发:Laravel核心——Ioc服务容器源码解析(服务器绑定)

    服务容器的绑定 bind 绑定 bind 绑定是服务容器最常用的绑定方式,在 上一篇文章中我们讨论过,bind 的绑定有三种: 绑定自身 绑定闭包 绑定接口 今天,我们这篇文章主要从源码上讲解 Ioc ...

  8. voyage java_GitHub - yezilong9/voyage: 采用Java实现的基于netty轻量的高性能分布式RPC服务框架...

    Voyage Overview 采用Java实现的基于netty轻量的高性能分布式RPC服务框架.实现了RPC的基本功能,开发者也可以自定义扩展,简单,易用,高效. Features 服务端支持注解配 ...

  9. 【.NET Core项目实战-统一认证平台】第十六章 网关篇-Ocelot集成RPC服务

    一.什么是RPC RPC是"远程调用(Remote Procedure Call)"的一个名称的缩写,并不是任何规范化的协议,也不是大众都认知的协议标准,我们更多时候使用时都是创建 ...

  10. 基于 Python 自建分布式高并发 RPC 服务

    RPC(Remote Procedure Call)服务,也即远程过程调用,在互联网企业技术架构中占据了举足轻重的地位,尤其在当下微服务化逐步成为大中型分布式系统架构的主流背景下,RPC 更扮演了重要 ...

最新文章

  1. 持续集成之戏说Check-in Dance
  2. iOS学习9_事件分发amp;响应链
  3. 使用lucce分词怎么_真小叮当深度学习:自然语言处理(三)文本处理之分词专题...
  4. Java开发者需要了解的移动开发编程语言
  5. springcloud-06-feign的使用
  6. 文件与目录权限,文件查找
  7. curl -windows下接口通讯
  8. Python3 协程 + 正则 批量爬取斗鱼美女图片
  9. dedecms备份mysql数据库文件_dedecms备份的数据库文件在哪里
  10. linux打开mysql某张表_Linux——MySQL多表连接
  11. 7-21-第三篇 validation相关操作
  12. 豆瓣电影详情数据爬取
  13. PHP实现手机号或身份证号中间几位变*
  14. 课堂笔记(3) 假设检验 Hypothesis testing
  15. Spark Mllib里的分布式矩阵(行矩阵、带有行索引的行矩阵、坐标矩阵和块矩阵概念、构成)(图文详解)...
  16. 机器学习的「反噬」:当 ML 用于密码破解,成功率竟然这么高!
  17. 2019计算机学院年会主持稿,2019年学术年会主持稿-范文汇编.doc
  18. [艺术创作]摄影构图的传统法则
  19. pythonsl火车加字_荐Python实现Radon变换——直接反投影和滤波反投影
  20. 取消小米笔记本插入耳机后弹框

热门文章

  1. 台式计算机的无线上网卡多少线,台式电脑可以用无线上网卡上网吗
  2. google退出中国市场是战略性错误
  3. 关于GOP和帧率、码率的关系
  4. GroupBox与Panel控件
  5. win7计算机上缺少网络协议,win7系统安装ipx协议提示找不到相应的模块的解决方法...
  6. 微软账号登陆不上_微软待办(todo)如何跟Outlook任务同步?
  7. Bootstrap如何设置table样式
  8. [Factory mode] 怎么配置工厂模式测试项
  9. 身份证号码规律,亲测可用
  10. SM2椭圆曲线公钥加密/解密算法