我想制作一个表,其中条目在插入 PHP 和 MySQL 后 24 小时过期。
理想情况下,我想在每次用户与我的服务器交互时运行一个“删除过程”,删除旧条目。由于这更频繁,您应该不会删除大量数据,因此它应该只需要几毫秒。
我给每个条目一个日期/时间附加值。
我该怎么做?
你可以使用 MySQL 的事件调度器:
到期时自动删除此类记录:
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();
DELETE FROM table WHERE added < FROM_UNIXTIME(UNIX_TIMESTAMP()-24*60*60)
EXPLAIN
(MySQL 手册)并使用索引优化您的 SELECT 查询(MySQL 手册)