商品的倒计时、日期循环的订票,这类需要实时显示和保存到数据库是怎么实现的?
发布于 9 年前 作者 think2011 7086 次浏览 最后一次编辑是 8 年前 来自 问答

例如我要在设计一个商品的倒计时,那么

  1. 为了防止服务器宕机,我就得把倒计时间保存到数据库里对吧?
  2. 然后我每次用户访问我就从数据库里读出倒计时间,然后前端用js实时倒计时显示。

假如是这样实现的,那么这2个问题我不明白:

  1. 假如我有很多商品,那每个商品都在后台用 setinerval 在倒计时,每次用户访问都读数据,这不是频繁的读写了吗?
  2. 万一服务器宕机了,在服务器宕机和恢复的这段时间失去的时间怎么办?

请问我理解的对吗?

10 回复

赶脚应该DB存的是截止时间吧~

维护一个js文件,里面写好对应的商品id和开始时间,页面加载后,跟当前时间比较,做倒计时 不是数据库里的数据才叫数据,变量,数组都算数据吧

@CarlosRen 那在哪个环节是可以判断商品有没有到期的? 我想到的只有在服务端有一个商品对应的 setinerval 一直在运行着。

可以放到客户端啊 ,从静态文件里读取{商品信息,截止时间}你的setinerval 函数根据获得当前系统时间,就可以做倒计时了吧

第一个问题,你需要持久化中间件

商品详情页这样这个可以根据商品数据,存储截止时间戳,在展示的时候,与当前时间做减法计算出时间差,js做定时器就行了吧

@CarlosRen @lik0914

我明白客户端可以根据后端给出的时间来显示倒计时。 想问的是,假如没有客户端访问,那么服务端也需要有一个setinerval吧,不然在什么时候改变商品的过期状态? 在下一次有访问的时候吗?

@think2011 像这种情况在做数据库设计的时候就要考虑了,应该存这个商品的类型,比如是限时特卖,然后有开卖时间和结束时间,而不是用是否过期来表示。 自豪地采用 CNodeJS ionic

@think2011 简单的, 你商品过期不过期, 你不是可以根据过期时间戳判断出来,不用更改状态也是可以, 除非你有特殊需求

@lik0914 @wengqianshan

恩,我想多了,根据过期时间来判断,不需要更改状态,谢谢各位!

回到顶部