这里有新鲜出炉的精品教程,程序狗速度看过来!
SD 框架最新版本 2.2.0 版本带了全新的高度自由的服务器设计体验。
最大的变化是开发者简单的修改配置就可以自由的开启多个端口,并且为每个端口配置不同的协议,并且在框架内部会自动转换协议。
比如说 A 用户连接到了 9091 端口,B 用户连接到了 9092 端口,服务器通过广播或者群发消息时会自动将信息封装成端口定义的协议,开发者无需关心。同样 AB 用户发来的消息也会被服务器自动解除封装路由到控制器中。
- use ServerCoreBasePortManager;
- $config['ports'][] = [ 'socket_type' = > PortManager: :SOCK_TCP, 'socket_name' = > '0.0.0.0', 'socket_port' = > 9091, 'pack_tool' = > 'LenJsonPack', 'route_tool' = > 'NormalRoute', ];
- $config['ports'][] = [ 'socket_type' = > PortManager: :SOCK_TCP, 'socket_name' = > '0.0.0.0', 'socket_port' = > 9092, 'pack_tool' = > 'EofJsonPack', 'route_tool' = > 'NormalRoute', ];
- $config['ports'][] = [ 'socket_type' = > PortManager: :SOCK_HTTP, 'socket_name' = > '0.0.0.0', 'socket_port' = > 8081, 'route_tool' = > 'NormalRoute'];
- $config['ports'][] = [ 'socket_type' = > PortManager: :SOCK_WS, 'socket_name' = > '0.0.0.0', 'socket_port' = > 8083, 'route_tool' = > 'NormalRoute', 'pack_tool' = > 'NonJsonPack', 'opcode' = > PortManager: :webSOCKET_OPCODE_TEXT];
- return $config;
通过 ports.php 配置文件我们开起了 2 个 tcp 端口和 1 个 http 端口以及 1 个 websocket。
启动服务器后我们可以看到每个端口的状态,以及赋予端口的协议封装器。
关于协议封装器 Pack,新版本也进行了增强,继承 IPack 接口现在需要实现 5 个接口
- interface IPack {
- function encode($buffer);
- function decode($buffer);
- function pack($data);
- function unPack($data);
- function getProbufSet();
- }
其中 encode 和 decode 是协议头的解析,pack 和 unpack 是协议体的序列化工作,getProbufSet 则会返回 swoole 的协议配置信息。
框架默认提供了 4 个基本 pack 和一个 protobuf 的 pack。
DispatchPack: 框架内部和 Dispatch 服务器通讯时使用的内部协议,序列化速度最快,但只支持 swoole。
EofJsonPack: 使用 JSON 协议 + EOF 的封装器
LenJsonPack: 使用 Len 头 + JSON 协议的封装器
NonJsonPack:JSON 协议封装器,没有任何头部,适用于 websocket 协议。
SD2.2.0 版本还提供一个跨进程的高速内存缓存模块
- public
- function http_map_add() { $cache = Cache: :getCache('TestCache'); $cache - >addMap('123'); $this - >http_output - >end($cache - >getAllMap());
- }
其中 TestCahce 是一个 Task 类
- class TestCache extends Task { public $map = []; public
- function addMap($value) { $this - >map[] = $value;
- return true;
- } public
- function getAllMap() {
- return $this - >map;
- }
- }
使用起来是不是超级简单?
SD2.2.0-beta 版本目前只能在 git 上下载,composer 安装的还是 2.1.5 版本,欢迎大家尝鲜,这将是目前 SD 框架更新历上最好用的一个版本!(由于配置文件改变过大,旧用户需要手动修改配置模板)
来源: http://www.phperz.com/article/17/0727/343778.html