Php 将LAMP用作我的游戏的服务器组件是否可行?

Php 将LAMP用作我的游戏的服务器组件是否可行?,php,mysql,lamp,Php,Mysql,Lamp,我一直在开发一个虚拟多人游戏,它将每个玩家的重要数据存储在我的MySQL数据库中。该游戏类似于宗族冲突,玩家可以建立自己的基地,也可以选择攻击其他玩家的基地 为了防止作弊,所有重要的函数都通过PHP在我的服务器上运行。例如,如果一个玩家想要建造一座房子,服务器会被告知:玩家想要建造一座到网格{x,y}的房子,PHP脚本会从数据库中检查该区域是否空闲,玩家是否有技术、资金等 所有这些功能都相对简单。他们只是检查谁试图访问数据库,以及他们是否可以做他们想做的事情。然后服务器将更新数据库中播放器的数据

我一直在开发一个虚拟多人游戏,它将每个玩家的重要数据存储在我的MySQL数据库中。该游戏类似于宗族冲突,玩家可以建立自己的基地,也可以选择攻击其他玩家的基地

为了防止作弊,所有重要的函数都通过PHP在我的服务器上运行。例如,如果一个玩家想要建造一座房子,服务器会被告知:玩家想要建造一座到网格{x,y}的房子,PHP脚本会从数据库中检查该区域是否空闲,玩家是否有技术、资金等

所有这些功能都相对简单。他们只是检查谁试图访问数据库,以及他们是否可以做他们想做的事情。然后服务器将更新数据库中播放器的数据,并向设备返回消息


因此,基本上我的游戏将始终遵循相同的过程:

1) 播放器设备发出请求

2) 服务器验证玩家并允许或拒绝请求

3) 服务器向播放机设备发送一个响应,该设备随后响应


但我不确定我的方法是否可行或可扩展。我刚刚单独测试了一下,效果很好,但假设我在第一周就有100到1000名球员。在峰值时,每秒可能有几百个服务器请求,在这里调用PHP脚本并访问和更新数据库。如果它成为热门,并且有数千人同时访问我的PHP脚本和数据库,该怎么办

这种方法一开始是否可行?如果我的服务器足够强大,那么一个PHP脚本可以被这么多人同时访问吗?服务器可以在一秒钟内写入我的数据库数百次吗?它会对操作进行排队吗?它会忽略一些操作吗?重叠操作会失败吗


例如,如果我支付了AWS EC2的费用并在那里安装了我的LAMP,这种系统会工作吗?或者我会遇到一些我不知道的限制或问题吗?

是的,LAMP环境可以轻松管理每秒超过10k的请求

这里只有一个建议,而不是
Apache2
server使用性能优于
Apache2
server的
Nginx
server。As
Nginx
在大多数情况下仍然是性能更好的选择

参考:

如果您想自己进行基准测试,您可以使用:

由于您计划在EC2上部署它,最初您可以使用m5a.large,稍后再创建(克隆)一个m5a.large Ubuntu服务器,并将它们都放在ELB下


祝你好运

是的,LAMP环境可以轻松管理每秒超过10k的请求

这里只有一个建议,而不是
Apache2
server使用性能优于
Apache2
server的
Nginx
server。As
Nginx
在大多数情况下仍然是性能更好的选择

参考:

如果您想自己进行基准测试,您可以使用:

由于您计划在EC2上部署它,最初您可以使用m5a.large,稍后再创建(克隆)一个m5a.large Ubuntu服务器,并将它们都放在ELB下

祝你好运

PHP脚本可以被这么多人同时访问,服务器能在一秒钟内写入我的数据库数百次吗?它会对操作进行排队吗?它会忽略一些操作吗?重叠操作会失败吗

  • 每秒上百次——好的。数千人——视情况而定
  • 对操作进行排队——是的,但这相当快;这些操作大部分将并行执行
  • 忽略一些——不。如果他们排队的时间太长,超过了默认值为50秒的
    锁定等待超时时间
    。(不太可能发生。)
  • “只是失败”——不
您可能应该计划有足够的RAM来处理所有涉及的数据。(听起来这没什么问题。)如果查询必须经常进入磁盘,这就成为了游戏扩展的一个限制。AWS EC2使用SSD,对吗?(硬盘速度太慢。)

是否涉及图形?是什么处理的?是否完全在每个用户的客户端浏览器中?我这样问是因为如果在重画屏幕时涉及SQL查询,那可能是一个沉重的负担

听起来典型的“会话”是

  • 启动PHP
  • 连接到MySQL
  • 选择
    用户信息
  • 做一些PHP处理
  • `更新用户信息
这将平均每几秒钟发生一次。一千名用户这样做应该很容易实现

假设这是一个单人游戏。相反,如果它是一个多用户游戏,“新建的房子”不需要向所有其他用户广播吗

PHP脚本可以被这么多人同时访问,服务器能在一秒钟内写入我的数据库数百次吗?它会对操作进行排队吗?它会忽略一些操作吗?重叠操作会失败吗

  • 每秒上百次——好的。数千人——视情况而定
  • 对操作进行排队——是的,但这相当快;这些操作大部分将并行执行
  • 忽略一些——不。如果他们排队的时间太长,超过了默认值为50秒的
    锁定等待超时时间
    。(不太可能发生。)
  • “只是失败”——不
您可能应该计划有足够的RAM来处理所有涉及的数据。(听起来这没什么问题。)如果查询必须经常进入磁盘,这就成为了游戏扩展的一个限制。AWS EC2使用SSD,对吗?(硬盘速度太慢。)

是否涉及图形?是什么处理的?是否完全在每个用户的客户端浏览器中?我这样问是因为如果在重画屏幕时涉及到SQL查询,那可能是一个错误