现在做个项目,遇到点难题,
用户下了个订单后,有个订单有效期时间,存在数据库表中,
如果当前时间超过了这个时间点,则把数据库中的这条记录更新掉。
但这个过程要服务器后台自己来判断触发的,而不是用户触发了点击事件来触发的。
------解决方案--------------------
如果不考虑性能,就用定时器吧.. 订单产生,就启用定时器
------解决方案--------------------
做个定时器,每天固定时间去检索有效期限,到期的全自动删掉不就可以了?
------解决方案--------------------
这个问题不用考虑用后台来实现.因为用后台自动定时或另开线程去干这件事是一件非常耗资源的事.你得每秒检查一次.
你可以做得灵活些,比如一开始就在客户页面用个JS来存这个时间,并倒记时,如果到时间了就发起AJAX更新数据.并且当用户每次访问到这个时间页面时检查一下这个时间是否该更新了.所以按这个思路数据库会存在已过期了,但还未更新到的数据.这个不用担习,因为如果用户下次访问到这个数据页面或时间页面了我们已经做了检查.所以客户那边的该功能永远能正常运作.
------解决方案--------------------
Quartz触发器
------解决方案--------------------
可以尝试运用延迟求值的思路:用 aop 拦截用户订单有关的 get 函数,在get 的时候,如果时间过期,则更新,然后返回实际的 get 函数,否则直接返回 get 。
------解决方案--------------------
在每次请求资源的时候把超时的资源作为可用资源来查不就可以了吗
------解决方案--------------------
也可以参照这个嘛,让下一个订单请求进来时判断上一个订单是否已超时,如果超时则让他继续下去,未超时让他等待或跳到上一步操作并提示等待
------解决方案--------------------
直接在页面上做一个倒计时就行了,时间到了就触发一个函数update数据库就ok了!希望有所帮助