idrunk/dce-app

使用DCE初始化的项目

安装: 50

依赖: 0

建议者: 0

安全: 0

星星: 3

观察者: 1

分支: 0

开放问题: 0

类型:项目

dev-master 2021-03-28 11:43 UTC

This package is auto-updated.

Last update: 2024-09-21 21:14:34 UTC


README

Dce是一款基于PHP8开发的网络编程框架,支持传统的Cgi式Web编程和命令行工具编程,也支持Swoole下的常驻内存式Web编程与长连接服务器编程。同时,它设计了一套通用的RCR架构来处理所有类型的网络编程,使你的应用项目保持清晰整洁,帮助你轻松编写出易于复用和维护的代码。

RCR架构流程图

Dce还拥有许多特色功能,其中最为突出的是分库中间件,可以让你轻松实现分库查询。除此之外,还提供负载均衡连接池、远程过程调用、ID生成器、并发锁、会话管理器等特色功能。这些功能依赖于Swoole,Dce的作者也强烈推荐你在Swoole环境下使用Dce,结合其多进程协程模式,可以充分发挥你的服务器性能。

当然,除了上述功能外,模型、校验器、缓存器、事件、查询器、活动记录等常规功能模块也是不可或缺的。

开始使用

获取

composer create-project idrunk/dce-app:@dev

取用例

composer create-project idrunk/dce-app:dev-sample dce-sample

使用命令行工具

执行一个空命令

./dce
# 或者在windows下执行:
.\dce.bat
# 将响应:
#
# 你正在cli模式以空路径请求Dce接口

在Swoole的Linux下启动Websocket服务器

dce websocket start
# 将响应
# Websocket server started with 0.0.0.0:20461.

JS连接Websocket服务

const ws = new WebSocket('ws://127.0.0.1:20461');
ws.onopen = () => ws.send('');
ws.onmessage = msg => console.log(msg.data);
// 若连接成功,将在控制台打印出下述消息
/*

{"data":{"info":"恭喜!服务端收到了你的消息并给你作出了回应"}}
*/

使用Redis连接池

DceRedis的方法会自动根据环境判断是从实例池取还是新建连接

// 从连接池取一个Redis实例
$redis = DceRedis::get();
$redis->set('homepage', 'https://drunkce.com');
// 将实例归还连接池
DceRedis::put($redis);

数据库查询

进行分库查询需要配置分库规则,但查询方法与普通查询没有区别,因此以下示例也适用于分库查询。

// 查一条
$row = db('member')->where('mid', 4100001221441)->find();
// db方法为实例化查询器的快捷方法

// 简单联合查询
$list = db('member', 'm')->join('member_role', 'mr', 'mr.mid = m.mid')->select();

// 较复杂的嵌套条件查询
$list = db('member')->where([
    ['is_deleted', 0],
    ['register_time', 'between', ['2021-01-01', '2021-01-31 23:59:59']],
    [
        ['level', '>', 60],
        'or',
        ['vip', '>', 1],
    ],
    ['not exists', raw('select 1 from member_banned where mid = member.mid')],
])->select();

通过上述简介,相信你对Dce已经有了初步的认识。Dce的玩法远不止这些,你可以点击这里继续深入了解。