A
asnychen
Unregistered / Unconfirmed
GUEST, unregistred user!
现在有个项目,类是网吧,但不完全和网吧一样。。。会员是先在会员自己的上网卡上先存预存一笔钱,然后才能上网,或者在该俱乐部消费。1、当会员卡上余额不够上1个小时的时候,就不让他上机,但是如果他余额大于等于1个小时就可以上机,并且这时根据他的余额计算出他总共能上多久,把这个截止时间写到管理的数据库中,2、数据库服务器检测到截止时间小于等于当前时间,就表示该用户上网时间到了,提示用户余额不足,并且锁定他的机子。3、如果是没到他的最大截止时间,他就下机了,那就根据他下机的时间和上机的时间结算实际费用。(在没到最大截止时间的时候,下机时,由于有一个针对俱乐部会员的免费时间上机,所以结算的时候,会只计算收费时间的实际金额,比如零晨4点到6点为免费时间)4、但是在会员上网过程中有可能在俱乐部消费其他项目,比如买饮料喝或者咖啡、餐点什么的,都是从用他的会员卡进行消费。5、会员卡余额不能为负,上网的时候消费其他东西的时候,不会影响他上网扣费(就比如是,上网1小时5元,他卡上是8元,上机后,他买了瓶饮料用了4元,那就会出现负1的情况,这样是不允许的。)目前我的想法是上网扣费是每个小时记费一次(每个小时开始的时候就扣一个小时的钱),中间的消费就不会影响,因为是提前扣费。但是由于该俱乐部目前计算会有上千台电脑(包括上网用的和租赁使用的,都是按小时计算的),我在数据库服务器上写了存储过程来进行扣费检测。然后程序没10秒中调用一次,判断时间到了没,或者余额是否足够。但是我发现我模拟只有几百台电脑在使用时,还可以。。当我模拟有1000台以上正在使用的的时候这样的效率就太低了。而且数据库服务器的占用的内存达最大达到了500M(服务器是4核1G内存)不知道有没有更好的办法,我的想法是可不可以上机时只做记录不计费只根据他的余额判定可以上多久做个记录时间,在下机时再统一结算,但是这样中间的消费就有可能造成让别人免费上了很长时间,却没扣钱。(因为不能为负,最多只能扣到0)。。希望有朋友能给出好的思路。。