poplary/lumen-hprose
Composer 安装命令:
composer require poplary/lumen-hprose
包简介
Hprose for Lumen
README 文档
README
安装
直接使用
composer require poplary/lumen-hprose
使用lumen配置
-
在 bootstrap/app.php 注册 ServiceProvider
$app->register(\Poplary\LumenHprose\ServiceProvider::class);
-
配置.env文件
// 服务的名称 HPROSE_SERVICE=product // 是否开启 debug HPROSE_DEBUG=true // Hprose 服务启用方式,可选 socket 和 swoole,选择 swoole 时需要安装 swoole 扩展 HPROSE_SERVER=socket // 监听的 TCP 端口 HPROSE_URI=tcp://0.0.0.0:8889 -
创建
配置和路由文件:cp ./vendor/poplary/lumen-hprose/config/hprose.php ./config/hprose.php cp ./vendor/poplary/lumen-hprose/routes/hprose.php ./routes/hprose.php
使用
路由
路由文件
routes/hprose.php
添加路由方法
use Poplary\LumenHprose\Facades\Router; Router::add(string $name, string|callable $action, array $options = []);
- string $name 可供客户端远程调用的方法名
- string|callable $action 类方法,格式:App\Controllers\User@update
- array $options 是一个关联数组,它里面包含了一些对该服务函数的特殊设置,详情请参考hprose-php官方文档介绍 链接
发布远程调用方法 getUserByName 和 update
Router::add('getServiceName', 'Poplary\LumenHprose\Controllers\DemoController@getServiceName');
控制器
<?php namespace Poplary\LumenHprose\Controllers; /** * Class DemoController. */ class DemoController { /** * @return string */ public function getServiceName(): string { return config('hprose.service'); } }
客户端调用 客户端可以只安装 Hprose
$client = new \Hprose\Socket\Client('tcp://127.0.0.1:8889', false); echo $client->getServiceName();
路由组
Router::group(array $attributes, callable $callback);
- array $attributes 属性 ['namespace' => '', 'prefix' => '']
- callable $callback 回调函数
Router::group(['namespace' => 'Poplary\LumenHprose\Controllers'], function ($route) { $route->add('getServiceName', 'DemoController@getServiceName'); });
客户端调用
echo $client->getServiceName();
前缀
Router::group(['namespace' => 'Poplary\LumenHprose\Controllers', 'prefix' => 'demo'], function ($route) { $route->add('getServiceName', 'DemoController@getServiceName'); });
客户端调用
echo $client->demo->getServiceName(); // 或者 echo $client->demo_getServiceName();
如果服务端出现 Exception ,因为 Hprose 没有返回 code,需要将code 合并到message用json方式包裹返回
try{ $client->user->getServiceName(); }catch(\Exception $e){ $info = json_decode($e->getMessage(),true); $message = $info['message']; $code = $info['code']; }
中间件
中间件分为四种,Filter,BeforeFilterHandler,AfterFilterHandler,InvokeHandler.
-
Filter的使用可以查看 11 Hprose 过滤器。 -
BeforeFilterHandler,AfterFilterHandler,InvokeHandler有对应的接口,存放在./src/Middleware/Contracts目录中,新建中间件时,需要实现对应的接口。相关的使用可以查看 12 Hprose 中间件。 -
中间件需要注意加载的顺序,具体配置在
./config/hprose.php的middleware数组中。
启动服务
php artisan hprose:server
更新了路由后需要重新启动服务
Demo 测试
php artisan hprose:client:demo
poplary/lumen-hprose 适用场景与选型建议
poplary/lumen-hprose 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.09k 次下载、GitHub Stars 达 2, 最近一次更新时间为 2020 年 08 月 13 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「Hprose」 「lumen」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 poplary/lumen-hprose 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 poplary/lumen-hprose 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 poplary/lumen-hprose 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Testing Suite For Lumen like Laravel does.
Hprose asynchronous client & standalone server based on swoole
Stackdriver handler for Monolog (codeinternetapplications/monolog-stackdriver Fork).
Class to generate a standard structure for api json responses
Hprose client/server providers for Laravel 5.x or Lumen 5.x
Amqp classes
统计信息
- 总下载量: 1.09k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 18
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-08-13