php实现预约购买mysql怎样规划?

现在有个客户需求是这样的,
用户在网站可以,预定购买商品。

用户可以修改设置
每7天,买一次,金额是多少
也可以设置每8天,买一次,金额是多少
还可以设置9天,买一次,金额是多少
还可以设置10天,买一次。金额是多少

同时用户可以设置,是否开启,预约购买(定时购买)。

图片描述

这种需求怎么实现的比较好。我想了好几天,终于有点想明白了。

设置一个->预约表

有,用户id,预约金额(冗余),预约日期,状态

再弄一个->预约配置表

用户id,预约天数,预约金额,预约是否开启

一共2张表。

再后台生成,根据用户设置的预约配置,生成具体的预约单,放到 预约表去。

例如:用户A,id=1000,预约间隔天数:10天

用户id 预约金额 预约日期 状态

1000 2000 2019-4-19 8:05 待执行
1000 2000 2019-4-29 8:05 待执行
1000 2000 2019-5-09 8:05 待执行
1000 2000 2019-5-19 8:05 待执行
1000 2000 2019-5-29 8:05 待执行
1000 2000 2019-6-09 8:05 待执行
1000 2000 2019-6-19 8:05 待执行

这样每个用户生成7个预约单,后台监控,是否需要补单。如果需要补单,就补上。
php轮询,检查预约日期是否超过了当前时间,如果超过了就执行买入操作。

这样设计,还是还觉得不错,现在想想,还有是问题,一个用户就要7天的数据,占用7条数据资源。如果有20万用户,

光这个都要生成,140万个订单, 累计起来数据量很快几百万条,不理想!

有没有一种巧妙的设计,请大神指点一下把!

怎样巧妙的设计出,不用定时器轮询,也不用每个用户都插入7天的数据。

哪位大神,开下脑洞,帮我看看,拜托了。

阅读 2.5k
1 个回答

一张预约表,一张实际执行表,每天扫预约表,

预约表只记录下一次预约的时间,每天扫或者每半小时扫的也是这个时间,成功预约后写入实际执行表,当天23.59执行预约表和执行表更新下一次预约时间的更新,

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题