x天后删除用户帐户

时间:2014-05-13 11:33:49

标签: php mysql

我将用户注册日期保存在signupdate列的mysql数据库中,然后我将该日期添加2天并将其保存在expiredate列中。

一切正常。

如果达到expiredate日期,我需要知道如何删除用户帐户?

我知道这可以使用 cron jobs 来完成,但我很难掌握这个概念。

这是我如何在mysql数据库中保存expiredate和signupdate:

$date = date ( 'Y-m-d' );
$newdate = strtotime ( '+2 days' , strtotime ( $date ) ) ;
$newdate = date ( 'Y-m-d' , $newdate );

$stmt = mysqli_prepare(
    $db_conx,
    "INSERT INTO users (expiredate, signupdate) VALUES (?, now())"
);
//after validation, of course
mysqli_stmt_bind_param($stmt, "s", $newdate);
mysqli_stmt_execute($stmt);
if (mysqli_affected_rows($db_conx))
{
    mysqli_stmt_close($stmt);
    //update was successful
    $id = mysqli_insert_id($db_conx);
}

有人可以指导我吗?

提前致谢。

4 个答案:

答案 0 :(得分:3)

类似的东西:

DELETE FROM `users` WHERE `expiredate` < DATE_SUB(NOW(), INTERVAL X DAY)

但是,首先使用where where条件进行选择,看看它是否选择了您的期望。我建议您使用active字段并暂停帐户 - 这样您就可以取消删除某人。

答案 1 :(得分:0)

你可以做点什么,其中d是否。几天

DELETE FROM users WHERE DATEDIFF(expiredate,signupdate)>=d

答案 2 :(得分:0)

您的要求分为两部分:

  • 编写脚本以删除已达到过期的用户帐户。这可以在PHP中完成,您可以从命令行测试脚本。

  • 定期运行此脚本。这就是你将使用cron的原因。 cron服务每分钟运行一次,并读取一个名为crontab的文件。如果crontab中有与当前时间匹配的作业,则启动它们。你应该搜索&#34; cron&#34;找到数百个描述crontab格式的网站,例如http://www.unixgeeks.org/security/newbie/unix/cron-1.html

您通常使用命令行通过运行命令crontab - e来编辑crontab。

一些较便宜的托管服务提供商不允许您运行cron作业。如果这是你的情况,还有其他选择。

答案 3 :(得分:0)

如果您可以在数据库上创建活动,则可以执行以下操作:

DELIMITER ~
DROP EVENT IF EXISTS clearUsers~
CREATE EVENT clearUsers
ON SCHEDULE
    EVERY 15 MINUTE
ON COMPLETION PRESERVE
DO BEGIN
    DELETE EXPIRED USERS;COMMIT;
END~
DELIMITER ;

正文可以是存储过程调用,也可以只是查询。

http://dev.mysql.com/doc/refman/5.6/en/create-event.html