我正在开发一个用 php 编写的 Web 应用程序。我在 mysql 表中有一些对象(表示为行)。我需要在一天中随机展示它们。
如何限制特定对象的显示次数,例如一小时内不超过 10 次?
通过显示计数,我的意思是对象被渲染了多少次。
例如,有 100 张图像,每个浏览量随机显示 5 张图像。我需要通过将图像的显示次数限制为一小时来标准化图像显示分布,以防止一张图像显示 1000 次,另一张图像显示 3 次。
希望它的解释有用。
最佳答案
最简单的方法可能是添加一个名为 last_shown
的字段到您的表格,然后将其从候选列表中排除(如果它在一小时内显示)。例如:
SELECT id FROM my_objects WHERE last_shown < DATE_SUB(NOW(), INTERVAL 1 HOUR) ORDER BY RAND() LIMIT 1
然后,当您显示该实际对象时,为该列添加时间戳,即:
UPDATE my_objects SET last_shown = NOW() WHERE id = <the_id_you_displayed>
这种方法更简单,但同样有效。如果您将时间范围减少到每 6 分钟一次,则实际上与“一小时内 10 次”的逻辑类似,并且不需要整个新的引用表。
关于php - 限制特定对象一小时内显示数量的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11151814/