# thinkphp6 **Repository Path**: lfveeker/thinkphp6 ## Basic Information - **Project Name**: thinkphp6 - **Description**: Laravel6路由风格及目录结构/RPC服务端/RabbitMQ生产者、消费者/Resetfull - **Primary Language**: PHP - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://www.lfveeker.com - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2022-11-27 - **Last Updated**: 2025-02-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: rpc, 消息队列, RabbitMQ, Resetfull ## README > 运行环境要求PHP7.2+,兼容PHP8.1 ## 功能介绍 * ResetFull+Laravel6路由风格 * 基于`php-amqplib/php-amqplib`封装RabbitMQ生产者、消费者 * 基于`hprose/hprose`封装RPC服务端 * 基于`predis/predis`封装Redis操作类(app\common\lib\Redis) * 基于`intervention/image`的图片操作类(app\common\lib\Image) * 基于`gregwar/captcha`的验证码类(app\common\lib\Captcha) * 目录结构重新划分: * 客户端(app/http/Controllers) * 中间件(app/http/Middleware) * 仓库(app/repository) * 模型(app/models) * 服务(app/service) * 视图(resources/views) * 静态文件(public/static) * 命令(app/command) * 自定义公共类库(app/common/lib) * 公共函数(app/common/functions.php) * 使用命名空间指定客户端控制器所在目录 * 基于layui的WEB管理端 * RPC、消息队列测试脚本(app/command/Test.php) ## 注意事项 - 1.为了看起来像laravel风格的路由,路由地址使用前缀(命名空间)+类名@方法名形式,因此没有控制器、操作方法一说,下述操作将获取为空值 `Request::controller();` `Request::action();` `$request->controller();` `$request->action();` - 2.VisitMiddleware中间件启用时会记录`json`、`jsonp`、`xml` 类型的响应记录(需配置mongodb、rabbitmq、运行mq消费者),该中间件按照类名@方法名形式的路由形式获取对应参数,因此更换路由形式话需要重写此中间件 - 3.表`cm_outapi_access_log`、`cm_response_log`、`bu_file_log`实际存储在MongoDB,MySQL仅保留表结构 - 4.RabbiMQ延迟消息使用前,须为RabbitMQ安装`rabbitmq_delayed_message_exchange`插件 - 5.RPC文件服务支持缩略图生成、分块上传;源代码暂不开放,如需使用请安装`tonyenc`扩展(密钥无需修改)或自行实现;前往:[tonyenc](https://gitee.com/lfveeker/tonyenc) ## 安装及运行 1.composer 安装依赖包 ~~~ composer install ~~~ 2.创建数据库 ~~~ php think migrate:run ~~~ 3.导入基础数据 ~~~ php think seed:run ~~~ 4.创建系统配置文件(.env) ~~~ APP_DEBUG=true APP_NAME=ThinkPHP APP_ENV=local APP_KEY=base64:Wkzlt1cu0MPndpvHLIvLd+XLc1Skm8WtubVNhbAS5ZY= APP_URL=http://127.0.0.1 #MySQL数据库配置 DB_CONNECTION=mysql DB_HOST=82.156.14.93 DB_PORT=3306 DB_DATABASE=thinkphp6 DB_USERNAME=thinkphp6 DB_PASSWORD= #MongoDB配置 MONGO_HOST=192.168.88.111 MONGO_PORT=27017 MONGO_DATABASE=thinkphp6 MONGO_USERNAME=thinkphp6 MONGO_PASSWORD= #Redis配置 REDIS_HOST=127.0.0.1 REDIS_PORT=6379 REDIS_PASSWORD= REDIS_DB=0 REDIS_PREFIX=THINKPHP6: #RabbitMQ配置 RABBITMQ_HOST=127.0.0.1 RABBITMQ_PORT=5672 RABBITMQ_USER=guest RABBITMQ_PASSWORD=guest #普通消息exchange_name RABBITMQ_EXCHANGE_NAME=thinkphp6_direct #普通消息queue_name RABBITMQ_QUEUE_NAME=thinkphp6_direct_exchange #延迟消息exchange_name RABBITMQ_DELAY_EXCHANGE_NAME=thinkphp6_delay_direct #延迟消息queue_name RABBITMQ_DELAY_QUEUE_NAME=thinkphp6_delay_exchange #RPC服务端运行端口 HPROSE_URI=tcp://0.0.0.0:9508 ~~~ 5.启动服务 ~~~ #启动RPC服务端 php think RpcServer #启动MQ消费者(普通消息) php think MQ #启动MQ消费者(延迟消息) php think MqDelay ~~~ 6.运行项目 ~~~ php think run -p [指定端口] 管理端默认用户:root 默认密码:abc123 ~~~ ## 测试脚本 > 测试前请将对应服务先行启动 1.RPC接口测试 ~~~ php think TEST RPC ~~~ 2.RPC接口上传文件 ~~~ php think TEST RpcFile ~~~ 3.生成MQ普通消息 ~~~ php think TEST MsgQueue ~~~ 4.生成MQ延迟消息 ~~~ php think TEST MsgQueueDelay ~~~ ## RPC接口说明 - 请求数据格式为`JSON` - header:用于鉴权的参数数据,规则请自行参照demo - body:接口参数数据 - 返回数据格式为`JSON` - status:状态码 - msg:说明 - data:返回数据 - time:时间 * 请求参数示例 ~~~ { "header":{ "api_key":100001, "sign":"f5b9e9036e2fd0b37bbd4394b7a9ad44", "request_time":"2023-01-01 14:13:14" }, "body":{ "args1":"参数1", "args2":"参数2" } } ~~~ * 返回参数示例(文件服务) ~~~ { "status":200, "msg":"上传成功", "data":{ "path":"http://127.0.0.1:2000/upload/100001/face/f51fc29a32eaf2874041859226eb623b.jpg", "origin":"http://127.0.0.1:2000/upload/100001/face/18d6d0e2b056dc72bf0f77f9a81fee03.jpg", "isFinish":1 }, "time":"2023-01-01 14:06:03" } ~~~ ## 效果图 ![img](https://gitee.com/lfveeker/thinkphp6/raw/master/readme/route.png) ![img](https://gitee.com/lfveeker/thinkphp6/raw/master/readme/index.png) ![img](https://gitee.com/lfveeker/thinkphp6/raw/master/readme/oauth_clients.png) ![img](https://gitee.com/lfveeker/thinkphp6/raw/master/readme/rights.png) ![img](https://gitee.com/lfveeker/thinkphp6/raw/master/readme/log.png) ## 版权信息 ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 本项目包含的第三方源码和二进制文件之版权信息另行标注。 版权所有Copyright © 2006-2021 by ThinkPHP (http://thinkphp.cn) All rights reserved。 ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 更多细节参阅 [LICENSE.txt](LICENSE.txt)