从mysql中删除过期的会话

时间:2014-02-26 06:07:40

标签: mysql perl session

我使用perl和mysql来存储用户会话。如果用户单击注销,我可以删除会话。但是如果会话到期,它会像僵尸一样填充数据库。因此,我必须通过解析每个用户会话数据并检索会话的上次访问时间来删除会话,然后删除它,如果访问时间超过一小时。它还是一个黑客。这样做有什么干净的方法吗? 如果mysql中有任何内容,比如会话过期时自动删除会话。

1 个答案:

答案 0 :(得分:2)

在会话表中,您可以存储表示会话上次访问时间的DATETIME字段。显然,每次用户使用会话访问资源时,您都可以更新此字段。

然后可以在cron上运行Perl脚本,删除超过一小时的所有会话。

示例:

delete from SESSIONS where access_time < DATE_SUB(now(),interval 1 hour)

这将删除SESSIONS表中access_time时间戳超过一小时的所有记录。在过去一小时内访问过的任何会话都不会被删除。