我想创建类似Snapchat的东西,它会在php / mysql中24小时后自动删除行。 我已经阅读过有关cron作业的内容,但它会降低应用程序的速度,所以我想知道是否有其他方法可以做到这一点?
答案 0 :(得分:3)
你正在看的是有效的东西:
DELETE FROM snaps WHERE created_at<=DATE_SUB(NOW(), INTERVAL 1 DAY)
只要您填充created_at
并将其编入索引,就可以相当快地运行。如果你有很多记录,而且我的意思是超过1亿,那么你需要将其记录下来:
DELETE FROM snaps ... LIMIT 10000
你可以用10K块或其他最好的块来做到这一点。
答案 1 :(得分:0)
虽然为数据库的每一行添加一个cron作业肯定是一个坏主意,但我没有看到每小时(或每30分钟,或一次)运行一个cron作业(例如)的问题一天),删除超过24小时的每个条目。
您还可以确保在查询时不会返回超过24小时的条目。
答案 2 :(得分:0)
对于您的问题,有很多方法可以做到:
但是我没有删除间隔并依赖它,我建议如下,它也会给你准确的24小时(你可能不需要它,但无论如何都是好的):