我想创建一个表,其中的条目在PHP和MySQL中插入后24小时到期。
理想情况下,每次用户与我的服务器交互时,我都希望运行“删除过程”,删除旧条目。由于这种情况更频繁,因此您不应该删除大量数据,因此它只需要几毫秒。
我已为每个条目添加了日期/时间值。
我该怎么做?
答案 0 :(得分:12)
您可以使用MySQL的event scheduler:
在过期时自动删除这些记录:
CREATE EVENT delete_expired_101
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 24 HOUR DO
DELETE FROM my_table WHERE id = 101;
定期自动清除所有过期记录:
CREATE EVENT delete_all_expired
ON SCHEDULE EVERY HOUR DO
DELETE FROM my_table WHERE expiry < NOW();
答案 1 :(得分:2)
DELETE FROM table WHERE added < FROM_UNIXTIME(UNIX_TIMESTAMP()-24*60*60)
EXPLAIN
(MySQL Manual)并使用索引优化SELECT查询(MySQL Manual)答案 2 :(得分:0)
您可以考虑使用Cron Job,http://en.wikipedia.org/wiki/Cron当符合您的要求时,每24小时运行一次。
这将有助于