【问题标题】:Deleting expired sessions from mysql从 mysql 中删除过期的会话
【发布时间】:2014-02-26 15:40:06
【问题描述】:

我正在使用 perl 和 mysql 来存储用户会话。如果用户单击注销,我可以删除会话。但是如果会话过期,它会像僵尸一样填满数据库。所以我必须通过解析每个用户的会话数据来删除会话,并检索会话的最后访问时间,然后删除它,如果超过一个小时没有访问它。它也是一个黑客。有什么干净的方法吗? 如果mysql中有任何东西,比如过期时自动删除会话。

【问题讨论】:

    标签: mysql perl session


    【解决方案1】:

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

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

    例子:

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

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

    【讨论】:

    • 你能解释一下这个查询吗
    • 如果你能告诉我如何在会话表中包含另一列。
    • 这本身就是另一个问题,但请查看 alter table 的语法 - dev.mysql.com/doc/refman/5.1/en/alter-table.html
    • 不,我问的是 perl CGI::sessions 中的会话而不是 mysql.. 无论如何感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2012-02-02
    • 2017-03-16
    • 2022-11-10
    • 2011-11-22
    • 2014-09-13
    • 2023-04-06
    • 2013-03-23
    • 2019-12-31
    相关资源
    最近更新 更多