栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

node-php-server 游戏服务器框架

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

node-php-server 游戏服务器框架

做游戏服务器8年多了,用过lua, 用过C++, 用过nodejs ,最近用的是php,有些人会说php不是用在web开发吗,怎么能用在游戏服务器的业务逻辑开发,php 怎么跟客户端通信,肯定有很多人不解。

其实很多时候,技术原理都是都是相通的,php能用作web开发,浏览器通过http协议发送数据给nginx ,nginx 再转发数据给php-fpm,之后php-fpm 再执行对应的php脚本,得到脚本执行结果,返还给nginx,再通过nginx 下发给浏览器显示网页效果,这中间的过程是短连接的过程,而游戏服务器大部分是长连接,所以把nginx 改造,或者参照nginx 原理,重新做一个网关服务器,维持长连接,进行多进程的负载均衡,让每一个耗时的操作,尽量不要影响到其也玩家,所以自己抽空弄了一个小型的游戏服务器框架,就是node-php-server。

 php-fpm 怎么执行php 脚本不用太去关心,这已经是很成熟的模式,只要是用php开发的web相关的,大部分是php-fpm这一套。重点是使用cgi协议与php-fpm 通信,多进程的管理,怎么负载优化,进程的监控等.

node-php-server 其于nodejs 开发的多进程游戏网关服务器,每个玩家的连接进来,都会分配到不同的业务进程进行逻辑处理,每个进程之间互不干扰,即使有个别进程因各种原因处理慢,其他进程没有任何影响,因此对玩家体验也比较好,不会因为有个别的长耗时命令,导致其他玩家的操作得不到及时的处理,影响游戏体验。

每个连接绑定在固定的进程,后续的消息,都在该进程处理,保持玩家操作的时序性,这个在游戏服务器开发中很重要,因为服务器同时处理了同一个玩家的多条命令,会导致意想不到的数据混乱,比如得到了两个道具,却只花了一次的钱,这些都是在游戏开发中的大忌。node-php-server严格按照时序性的原则,每个进程都有对应的消息对列,上一条命令处理好了,才能处理下一条,这样可能效率偏低,但是逻辑严谨,后面可以做优化的,比如把同一个玩家的命令,集中处理,减少中间的传输时间。

node-php-server 也有相应的进程监控,有业力进程退出时,自动补充一个新的进程,之前绑定在退出进程上的玩家连接,可以无逢切换到新补充的进程,对玩家没有任何影响。

对于游戏的推送,广播,可以由php脚本发起连接到node-php-server,再由node-php-server 转发消息给相应的连接,来达到推送的效果,但是没法做到把转发的过程放在子进程之中,因为还没找到相应的方法,把对应的连接正确地由父进程传到子进程,所以只能把转发的过程还是放在主进程,如果转发的过程有卡顿或者意外,都会影响node-php-server的稳定,这也是使用过程中需要注意的地方,也是后面需要优化的地方。

php层写逻辑,有很多的方便之处,不用关注内存的处理,有错误也不会影响游戏服务器的稳定,开发效率快,扩展多,说实话,再大的游戏的也不用996。

使用的时候直接修改 config 里面的配置文件就可以,再就是修改php-worker.js 里面php脚本的路径就可以,用php脚本写业务是真心方便。

github 链接

https://github.com/guoyilong/node-php-server

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/360960.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号