每小时奖励游戏

时间:2017-07-17 10:52:37

标签: c# asp.net asp.net-mvc performance cron

我想为我的学习制作一个基于网络的游戏。

游戏很简单:注册后你有100美元,你可以买一棵树,这棵树每小时给你10个苹果,你可以卖一个苹果1美元

我的问题是:我如何让这棵树每小时掉落10个苹果?我是否需要编写另一个连接数据库并更新所有内容的C#Console程序(又名cronjob)?每小时捕捉用户,获取树木并给他们苹果?我已经尝试过这种方式,但这是一个性能问题

我试图这样做并用假1000个用户填充我的数据库,每个用户有10000棵树(总共10000000棵树)但是我的C#程序(所谓的cronjob)花了超过5分钟来奖励所有假的有苹果的球员

我正在使用实体框架和foreach循环捕获每个玩家并计算他们的树然后添加苹果并保存数据库更改

1 个答案:

答案 0 :(得分:0)

首先,如果向您的服务器发出请求是任何人都可以看到苹果计数更新的唯一方式,我认为不需要在下一个请求之前进行这些更新。您可以存储latest_apple_drop_datetime,并根据要求计算苹果被丢弃的次数以及最近一次丢弃的次数。那样你就不需要任何cronjob了。接下来,玩家是否会看到其他玩家的活动?如果没有,您只需处理请求玩家的树木。最后,考虑在单个UPDATE语句中实现所有更新(我假设您使用的是SQL数据库),代码中没有任何循环,让数据库本身优化性能