关于用workerman做游戏服务端的问题

gddd

在Erlang中,轻量级进程是并发执行的最小单元。与传统的操作系统进程不同,Erlang的进程有着非常低的资源消耗,可以非常轻松地创建成千上万的进程。这种设计使得Erlang非常适合处理大规模并发任务。

现在想用workerman来做服务端,但是workerman好像进程数量是配置固定的

想和erlang一样,一个玩家一个进程

如果是Gateway::sendToGroup 去当作一个广播功能。如果有3000个玩家在线,foreach ($group_array as $group) 这样的模式 会不会第一个玩家和第二个玩家 客户端,收到消息的时候,时间相差超过50ms。或者更多玩家在线 这个延迟会不会更大

这是walkor大佬的回答
https://www.workerman.net/q/5560
https://www.workerman.net/q/778
2万在线服务端可以保证同时发出去,但是客户端是否同时收到看具体网络环境。如果客户端网络不好或者服务器带宽不够可能会延迟。

157 2 0
2个回答

胡桃

看带宽,结合消息体积和客户端数量自行评估。

虽然文档描述是同时发送消息,但是网卡发送数据包微观上还是串行的,不过只要带宽大.发送得够快也可以认为是并行,即“同时”。

再说PHP GC一次都得500ms了,想要保证50ms还是建议换语言,用C++ Rust,最次也得.NET C#这种

  • 暂无评论
nitron

难得看到有用Erlang的,老实说,Erlang/OTP的actor模型很适合游戏这种场景

  • 暂无评论
🔝