15分钟后删除记录

时间:2013-07-13 15:00:23

标签: php mysql timestamp sql-delete

我有一个不活跃的系统。它应该在15分钟后从非活动表中删除用户。 我还有一个代码,如果在该表中找不到该用户,则将该用户记录下来。 非活动脚本会在每次刷新页面时更新用户。

这是我尝试的非活动代码,到目前为止无效:

$result = mysqli_query($con,"SELECT * FROM inactive");

while($row = mysqli_fetch_array($result))

if ($row['inactive'] > timestampadd(MINUTE, -15, now()))
  {



    }else {

$db_query = "DELETE FROM inactive WHERE username='$username'";
$result = mysql_query($db_query);


    }

2 个答案:

答案 0 :(得分:7)

CREATE EVENT IF NOT EXISTS `remove_inactives`
ON SCHEDULE EVERY 15 MINUTE
ON COMPLETION PRESERVE
ENABLE
DO
    DELETE FROM `inactive`
        WHERE `timestamp` < DATE_SUB(NOW(), INTERVAL 15 MINUTE)
;

^使用一组并忘记定期MySQL Event 让服务器为您完成工作:)

对于PHP:

mysqli_query($connection, // or mysql_query(
<<<SQL
    CREATE EVENT IF NOT EXISTS `remove_inactives`
    ON SCHEDULE EVERY 15 MINUTE
    ON COMPLETION PRESERVE
    ENABLE
    DO
        DELETE FROM `inactive`
            WHERE `timestamp` < DATE_SUB(NOW(), INTERVAL 15 MINUTE)
    ;
SQL;
); // ends *_query() call

您只需要运行此一次即可在服务器上安装!

答案 1 :(得分:1)

如果您有时间戳字段,则只需执行一次查询,而不必迭代选择的结果集:

DELETE FROM inactive
WHERE timestamp < DATE_SUB(NOW(), INTERVAL 15 MINUTE)

您可以在cron或页面上执行该查询。