C# 每5秒检查一个数据库值是昂贵的,因为有很多用户计数,比如10000或更多?

C# 每5秒检查一个数据库值是昂贵的,因为有很多用户计数,比如10000或更多?,c#,php,unity3d,server-side,client-side,C#,Php,Unity3d,Server Side,Client Side,我正在使用Unity编写一个多人RPG游戏,在战斗场景中,玩家必须确定自己使用的攻击。当玩家按下攻击按钮时,玩家向服务器发送一个post请求,服务器强制检查post请求是否合法,然后如果请求合法,服务器将数据库值标记为“开”,或者确切地说,从“0”将其设置为“1”,例如,称为“已确定攻击” 问题是,我必须再次发出http请求来检查这个值。一场战斗最多有6个角色,如果所有人都想检查确定的攻击是0还是1,那么每个攻击请求会发出6个请求。例如,我不想考虑用户数量是否增加到10000。要为我正在使用的V

我正在使用Unity编写一个多人RPG游戏,在战斗场景中,玩家必须确定自己使用的攻击。当玩家按下攻击按钮时,玩家向服务器发送一个post请求,服务器强制检查post请求是否合法,然后如果请求合法,服务器将数据库值标记为“开”,或者确切地说,从“0”将其设置为“1”,例如,称为“已确定攻击”

问题是,我必须再次发出http请求来检查这个值。一场战斗最多有6个角色,如果所有人都想检查确定的攻击是0还是1,那么每个攻击请求会发出6个请求。例如,我不想考虑用户数量是否增加到10000。要为我正在使用的VPS服务器处理这些请求将非常困难。有没有办法减少请求计数?我不想使用套接字,我想使用会话或memcache。服务器端使用PHP,Unity客户端使用C#

我不想用插座

使用WebSocket

您可以使用独立库,也可以使用Unity的网络API并在其上启用websocket。如果您决定使用Unity Network API,只需将其设置为
true
,即可启用此功能


一旦启用,Unity将从套接字切换到websocket。如果您正在使用WebGL应用程序,可以在上查看此websocket插件

这似乎是一种非常糟糕的交互设计方式。我同意@DavidSchwartz的观点,您需要重新思考您的体系结构。如果您有类似Web的东西(可能是浏览器中的UI,或者可能是使用http而不是专用套接字协议的客户端应用程序),Web套接字是一种合适的方法。对于您尝试执行的操作,它的扩展性非常好(而且更高;我们的web套接字服务器目前有450k个开放连接)。Http每隔几秒钟轮询一次:会立即杀死我们。如果您将所有其他流量合并到同一个web套接字上:甚至更好。使用UNET它的简单脚本,通过命令和rpc函数生成不同的变量和减号或加法。