我正在尝试设置一个cron作业脚本来检查和删除时间戳超过15分钟的记录,但是,下面的脚本不起作用,我不知道为什么。我不熟悉日期比较,试图在网上寻找我的目标的解决方案,但没有一个是有效的。完成的脚本将是太棒了!提前谢谢!
<?php
include('../../db/db.php');
mysql_select_db($database_conn_abrv, $con);
$timetocheck = date('Y-m-d H:i:s', mktime(date("H"), date("i") - 15, date("s"), date("m"), date("d"), date("Y"));
mysql_query("DELETE FROM loginbans WHERE time_created>$timetocheck",$con) or die(mysql_error());
?>
答案 0 :(得分:0)
您可以将INTERVAL X MINUTE
用于MySQL:
DELETE FROM loginbans
WHERE time_created > (NOW() - INTERVAL 15 MINUTE)
答案 1 :(得分:0)
为什么要删除记录?这需要每隔几分钟运行一次的预定作业。这似乎是系统的负担。它还要求时钟真正在系统上与数据库和cron作业运行的地方同步(诚然,这些通常是同一台计算机,但不一定)。
相反,您可以在只获取过去15分钟记录的表上创建视图:
create view v as
select lb.*
from loginbans lb
where time_created >= now() - interval 15 minute;
或者,您可以在视图中添加isdeleted
标记:
create view v as
select lb.*, (time_created >= now() - interval 15 minute) as isdeleted
from loginbans lb;
如果您每隔15分钟生成大量数据(至少考虑数万条记录),我建议您查看分区。您可以按time_created
对数据进行分区,并定期删除分区。删除分区比丢弃行要便宜得多。