我将用户注册日期保存在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);
}
有人可以指导我吗?
提前致谢。
答案 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 ;
正文可以是存储过程调用,也可以只是查询。