网站首页 > 技术文章 正文
Workerman是一款开源高性能PHP应用容器,它大大突破了传统PHP应用范围,被广泛的用于互联网、即时通讯、APP开发、硬件通讯、智能家居、物联网等领域的开发。
GatewayWorker的技术概述
GatewayWorker基于Workerman开发的一个项目框架,用于快速开发TCP长连接应用,例如app推送服务端、即时IM服务端、游戏服务端、物联网、智能家居等等
GatewayWorker使用经典的Gateway和Worker进程模型。Gateway进程负责维持客户端连接,并转发客户端的数据给BusinessWorker进程处理,BusinessWorker进程负责处理实际的业务逻辑(默认调用Events.php处理业务),并将结果推送给对应的客户端。Gateway服务和BusinessWorker服务可以分开部署在不同的服务器上,实现分布式集群。
GatewayWorker提供非常方便的API,可以全局广播数据、可以向某个群体广播数据、也可以向某个特定客户端推送数据。配合Workerman的定时器,也可以定时推送数据。
GatewayWorker 与 Workerman的关系
Workerman可以看做是一个纯粹的socket类库,可以开发几乎所有的网络应用,不管是TCP的还是UDP的,长连接的还是短连接的。Workerman代码精简,功能强大,使用灵活,能够快速开发出各种网络应用。同时Workerman相比GatewayWorker也更底层,需要开发者有一定的多进程编程经验。
因为绝大多数开发者的目标是基于Workerman开发TCP长连接应用,而长连接应用服务端有很多共同之处,例如它们有相同的进程模型以及单发、群发、广播等接口需求。所以才有了GatewayWorker框架,GatewayWorker是基于Workerman开发的一个TCP长连接框架,实现了单发、群送、广播等长连接必用的接口。GatewayWorker框架实现了Gateway Worker进程模型,天然支持分布式多服务器部署,扩容缩容非常方便,能够应对海量并发连接。可以说GatewayWorker是基于Workerman实现的一个更完善的专门用于实现TCP长连接的项目框架。
用GatewayWorker还是Workerman?
如果你的项目是长连接并且需要客户端与客户端之间通讯,建议使用GatewayWorker。
短连接或者不需要客户端与客户端之间通讯的项目建议使用Workerman。
GatewayWorker不支持UDP监听,所以UDP服务请选择Workerman。
如果你有多进程socket编程经验的人,喜欢定制自己的进程模型,可以选择Workerman。
Linux系统快速开始(从一个精简的聊天demo开始)
1、下载demo(文章后面有链接)
2、命令行运行 unzip GatewayWorker.zip 解压缩GatewayWorker.zip
3、命令行运行 cd GatewayWorker 进入GatewayWorker目录
4、命令行运行 php start.php start 启动GatewayWorker
5、新开几个命令行窗口运行 telnet 127.0.0.1 8282,输入任意字符即可聊天(非本机测试请将127.0.0.1替换成实际ip)。
注意:如果telnet超时请检查服务器防火墙(iptables)
Windows系统快速开始(从一个精简的聊天demo开始)
1、下载demo
2、解压到任意位置
3、进入GatewayWorker目录
4、双击start_for_win.bat启动。
5、新开几个cmd命令行窗口运行 telnet 127.0.0.1 8282,输入任意字符即可聊天(非本机测试请将127.0.0.1替换成实际ip,)。
设置php环境变量
workerman的在Windows下与Linux下区别
1、win版本单个进程只支持200+个连接(最多255个);
2、win版本count属性无效,全部为单进程
3、不支持start stop reload restart status命令
4、cmd命令行启动,后面可接多个文件,例如 php start_web.php start_gateway.php start_worker.php
5、无法守护进程,cmd窗口关掉后服务即停止
6、每个启动文件只能实例化一个容器(Worker/WebServer/Gateway/BusinessWorker),需要实例化多个容器时
需要拆成多个文件,例如 start_web.php start_gateway.php start_worker.php 分别初始化web gateway worker
Windows版本workerman的启动与停止
cmd命令行中运行 php your_file.php(注意后面可以接多个文件)
注意windows版本没有stop、reload、restart、status命令,启动时直接运行 php 文件.php 即可,停止运行按ctrl+c
举例:(Windows环境)
- 因为Windows链接数限制,开2个现成的话,需要配置2个bat文件。
- 防止显示中文乱码。
路径:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
添加主键:autrun 键值:chcp 65001>nul
- 批处理文件内容:
chcp 65001
php Applications\MeterApp2\start_register.php Applications\MeterApp2\start_gateway.php Applications\MeterApp2\start_businessworker.php
pause
- 修改2个线程的监控端口:start_gateway.php
参考文件链接:https://www.workerman.net/
- 上一篇: 79、Workerman通信框架目录结构设计
- 下一篇: 如何在小程序中实现 WebSocket 通信
猜你喜欢
- 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)
本文暂时没有评论,来添加一个吧(●'◡'●)