我意识到有很多方法可以做到这一点,所以在我开始之前,我希望获得一些有这种任务经验的人的意见。

我有一个MySQL表,可下载数千次。每个下载都有一个列,其中包含总下载数量。

我想做的是使其更具动态性,因此将这个数字转换为最近30天的下载次数,也可以将其转换为。

因此,我基本上想创建一个新表,其中包含最近30天的每个下载ID和30个下载数据列。通过PHP将它们放在一起,然后下降。或者,我可以使用前面提到的表中的“添加的数据”字段,将下载总数除以给定下载已在线的天数。

如果不是完全不同的话,您会推荐什么解决方案?

最佳答案

这实际上取决于您的确切要求和系统负载。

您是否只需要上个月的结果?每月运行一次cronjob重置此值。如果您需要平均值(始终是过去30天),则您的mysql方法当然可以工作,但是30个字段可能有点过大。

两种解决方案:


每个下档有3个字段:今日计数器,包含一个
30个元素的json数组,以及今天的30天平均值。 Cronjob
常规(在午夜)可以将数据转发到每日计数器
到阵列,删除最早的条目并更新平均值。
这样一来,您将在运行期间将系统负载降至最低。
将RedSQL像Redis一样与每日计数器一起使用,并为每个计数器分配一个
30天超时。这样一来,您可以随时总结
下载文件所需的数据,甚至不动
数据库。

关于php - 最佳做法:最近30天内的观看次数/点击次数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20209570/

10-16 05:37