Php 订阅包及其存储

Php 订阅包及其存储,php,mysql,Php,Mysql,我很快就会提供一些基于网络的服务,我正在开发订阅系统。用户每月付费(或者可以提前几个月付费),但我提供不同的套餐。不同的软件包允许他们每天使用系统x分钟 比如说 套餐一让他们每天使用2分钟 套餐二让他们每天使用5分钟 包三让他们每天使用10分钟 等等。这些都是每月的 我当前的方法将允许我设置他们的包以及他们的订阅何时结束。我想改变这一点,以便他们可以有多个包 我的问题是: 他们买第一套。他们用了两天,决定升级到另一个软件包。他们买了第二套。现在他们有两个月的时间(减去两天),但这是第二包。基本上

我很快就会提供一些基于网络的服务,我正在开发订阅系统。用户每月付费(或者可以提前几个月付费),但我提供不同的套餐。不同的软件包允许他们每天使用系统x分钟

比如说

套餐一让他们每天使用2分钟
套餐二让他们每天使用5分钟
包三让他们每天使用10分钟

等等。这些都是每月的

我当前的方法将允许我设置他们的包以及他们的订阅何时结束。我想改变这一点,以便他们可以有多个包

我的问题是:

他们买第一套。他们用了两天,决定升级到另一个软件包。他们买了第二套。现在他们有两个月的时间(减去两天),但这是第二包。基本上,他们只是以第一包的价格多拿了一个月的第二包

所以我的想法是:

我可以分别存储每个事务,并在该包结束时存储在每个事务集中,以及存储的是哪个包。然后我可以
从'packages'中选择'package',其中'status'='active???顺序由'package`DESC LIMIT 1决定这将允许我选择较高的软件包,并将其提供给他们,直到该软件包变为非活动状态,然后恢复到较低的软件包。问题是这个
`status`='active'
没有跟踪日期。我怎样才能把这件事做好呢

我曾经处理过“每分钟付费”的交易,这是一个恐怖的故事。至少我介绍的场景是这样的,因为客户端计时和服务器端可以是两个不同的世界(比如暂停加载的流式视频与用户在页面上的实际时间由日期差异决定)

下面是我们如何处理的-除了打嗝补偿的平衡之外- 用户购买简单明了的分钟数。如果他们升级,在收取新分钟的费用后,将按照购买时设定的价格按未使用分钟的比例返还。这样,如果在退款后向他们收费有问题,你就不会输。 退款不是字面意义上的交易。它转储到与用户相关的余额中,然后通过按比例退款降低升级价格。将付费分钟数返回为零-在添加新的升级分钟数之前

系统中的漏洞通过将每个“单元”减少到其最低形式并将经济性建立在该数字的基础上而得以解决。因此,没有“一揽子计划”可言。只有与用户关联的分钟数和每分钟的成本取决于用户购买它们的时间。这样,如果您的费率发生变化,则不会影响提前多年预付费的老用户

请注意,这是一个简化的示例。实际系统极其复杂

对于您的场景,每日限制只是一个关系表,它在单个负载的基础上存储日期和集体页面时间,但是您可以选择确定它。不是一个试图累积的条目,而是一个尽可能小的条目,您可以随时收集和汇总它们。当有人抱怨他们的计算机冻结,他们失去了他们无法控制的时间时,这将为你节省大量时间。
因此,当sum脚本根据当前限制检测到分钟数已达到或超过时,它只是拒绝访问。

您应该只有一个包。升级时,应减去新旧软件包中使用的分钟数。只需保留旧包就可以了