【发布时间】:2014-02-26 15:40:06
【问题描述】:
我正在使用 perl 和 mysql 来存储用户会话。如果用户单击注销,我可以删除会话。但是如果会话过期,它会像僵尸一样填满数据库。所以我必须通过解析每个用户的会话数据来删除会话,并检索会话的最后访问时间,然后删除它,如果超过一个小时没有访问它。它也是一个黑客。有什么干净的方法吗? 如果mysql中有任何东西,比如过期时自动删除会话。
【问题讨论】:
我正在使用 perl 和 mysql 来存储用户会话。如果用户单击注销,我可以删除会话。但是如果会话过期,它会像僵尸一样填满数据库。所以我必须通过解析每个用户的会话数据来删除会话,并检索会话的最后访问时间,然后删除它,如果超过一个小时没有访问它。它也是一个黑客。有什么干净的方法吗? 如果mysql中有任何东西,比如过期时自动删除会话。
【问题讨论】:
在您的会话表中,您可以存储一个表示会话的最后访问时间的 DATETIME 字段。显然,您可以在用户每次使用其会话访问资源时更新此字段。
然后可以在 cron 上运行 Perl 脚本,删除所有超过一小时的会话。
例子:
delete from SESSIONS where access_time < DATE_SUB(now(),interval 1 hour)
这将从SESSIONS 表中删除access_time 时间戳早于一小时的所有记录。在过去一小时内访问过的任何会话都不会被删除。
【讨论】: