我正在尝试设置一个 sql 数据库,用户必须在其中确认他们的电子邮件地址。我想知道是否有一种方法可以自动删除 sql 数据库中尝试注册(提交其信息)但在 x 分钟后未确认其电子邮件地址的用户。
我编写的脚本将其信息直接插入数据库,然后在用户确认后将数据库上的列更新为“活动”,因此一旦激活,我就不会插入数据,而是在状态为“不活跃”。然后,当他们确认其电子邮件地址时,该状态将变为“活动”。
因此,如果用户提交了他们的信息,但未能确认他们的电子邮件地址,他们的详细信息仍然在数据库中。我需要一些东西,可以在他们提交信息的 x 分钟后自动删除状态为“NON_ACTIVE”的行。我在数据库中还有另一列,其中包含确切的提交时间和日期。
有任何想法吗?
SQL 将是DELETE FROM users WHERE (now() - mailsent) > (120*60) AND state = "NON_ACTIVE"
, where users是表名,mailsent邮件发送的时间戳和 120 您想要的超时分钟数。
您可以在 Linux 系统上通过 cronjob 运行此命令cron -e someUser
并输入以下行
* * * * * mysql myDatabase < 'DELETE FROM users WHERE (now() - mailsent) > (120*60) AND state = "NON_ACTIVE"'
这将每分钟运行该命令。请注意,您的someUser必须能够在没有密码的情况下访问 mysql 数据库,例如将密码输入$HOME/.my.cnf http://dev.mysql.com/doc/refman/5.1/de/option-files.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)