【发布时间】:2015-06-14 08:29:50
【问题描述】:
我必须在我的应用程序中向最终用户提供free demo 的一些服务。免费演示可以是30 mins, 1 hours, 5 hours 等(predefined time),仅限新用户一次。
用户也可以部分地消耗这些时间。就像在 30 分钟的免费演示中一样,他们可以使用今天的 10 分钟、明天的 15 分钟和第二天的剩余时间等。 现在,如果用户选择 30 分钟的免费演示并登录并使用该服务。我可以通过他的开始时间和结束时间限制用户 30 分钟。如果开始和结束时间的总和等于 30 分钟,我可以将它们发送到付款页面。
现在问题出现在一些不确定的情况下,例如如果用户在活动会话期间关闭浏览器或他们的互联网停止工作或其他任何事情。在此,由于缺少 endtime,我无法计算他们消耗的时间。
场景可能如下所示(30 分钟演示)。
UserID StartTime EndTime Consumed(mins)
10 09-04-2015 10:00 09-04-2015 10:10 10
10 10-04-2015 05:00 10-04-2015 05:04 4
10 11-04-2015 07:46 11-04-2015 07:56 10
10 11-04-2015 10:00 // Browser closed or any uncertain condition
10 11-04-2015 11:00 // How to restrict user to use actual 30 mins because I do not have EndTime in above row to calculate Consumed mins.
我可能同时有超过 100000 个用户使用我们的服务,所以我正在为此寻找一个有效的解决方案。
据我了解,我可以创建一个单独的作业来检查用户的 LastActiviteTime,并在此基础上更新他们在数据库中的 Consumed(mins)。该作业将每分钟执行一次,另一方面,每个会话用户的浏览器都会更新数据库中的LastActiveTime。
这可以解决我的问题,但由于每分钟有大量数据库请求,我不太确定我的应用程序的性能。
【问题讨论】:
-
这是什么服务?用户在使用您的服务时是否与服务器交互?
-
是的,用户与服务器交互,我们提供翻译类服务。
标签: .net sql-server performance architecture sql-server-performance