网站首页 > 技术文章 正文
前言:
GatewayWorker 是 Workerman 的一个框架,对应用层开发者更友好。GatewayWorker 多了一个网关,也就是 Gateway,负责与客户端连接,消息转发等。而自定义的协议,也就是 gateway 面向客户端提供服务的协议,下面就简单收一下 GatewayWorker 启动后连接的过程吧。
GatewayWorker 流程:
1. 运行 php think worker:gateway start。
2. 启动 Register 进程并开始端口监听。
3. 启动 BusinessWorker 进程,开始异步连接 Register。
4. 启动 Gateway 进程,开启内部协议 (GatewayProtocol) 并监听,同时异步连接 Register。
5. Gateway 进程将开启的 GatewayProtocol 服务地址发给 Register。
6. Register 接收 Gateway 内部通讯地址广播给所有 BusinessWorker 进程。
7. BusinessWorker 异步链接 Gateway,同时 Gateway 也监听来自客户端的链接。
8. 当客户端连接 Gateway 发来消息时,则他从连接的 BusinessWorker 中抽取一个转发。
9. BusinessWorker 则将连接事件交给 Event 业务处理。
10. Event 处理后又发给 Gateway,Gateway 再发给客户端。
ThinkPHP 集成 GatewayWorker:
现在新版的 TP 框架已经很好地集成了 GatewayWorker,不再像以前要改动入口文件。composer require topthink/think-worker 就可以安装,里面分别是 think-worker,gateway-worker 和 workerman 三个包。而为了不破坏 vendor 包,自定义的协议最好写在 TP 框架的应用层。
开始操作:
1. app 目录下创建一个 library (目录自行控制),再见一下 Game.php (举个例子,协议名看自己)。
2. Game.php 需要实现 Workerman 的 ProtocolInterface,且要完成 input,decode,encode 三个方法,之前有介绍,这里就略过。
3. 打开 config 的 gateway_worker.php,以下先不做处理的写好 game 协议。
4. 直接 php think worker:gateway start 运行,则直接报错。
5. 因为 gateway 外部协议需要 Workerman\Protocols 的命令空间,所以只需要给自定义的协议类起一个别名。
class_alias('app\library\Game', 'Protocols\Game');
6. 运行一下并做了测试,这样就完成了。
- 上一篇: 纯PHP开发的高性能PHPsocket服务器框架
- 下一篇: 37、php异常处理 php错误处理
猜你喜欢
- 2024-10-12 41、php多进程基本用法 php多进程编程
- 2024-10-12 使用 Workman 做一个聊天室 wordpress聊天室插件
- 2024-10-12 21、php面向对象例子-类声明与创建
- 2024-10-12 Web-Frameworks - 谁才是最快的 Web 框架
- 2024-10-12 Casbin实战大揭秘:教育培训领域的创新实践和高效优化策略
- 2024-10-12 go 和 php 性能如何进行对比? go跟php
- 2024-10-12 27、php面向对象例子-接口类 php 面向对象
- 2024-10-12 54、php利用信号实现父子进程间通信
- 2024-10-12 24、php面向对象例子-static关键字
- 2024-10-12 分享一个不错的PHP统计监控系统,值得试一下
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)