如何在经过一段时间后删除mysql行?

时间:2012-03-26 00:53:33

标签: php mysql automation delete-row

我不知道从哪里开始:

我有一个存储postIDDate的数据库。

我想要做的是让我的网站自动删除Date小于今天的所有行。此脚本根本不能有任何用户输入。没有按钮点击,没有。脚本必须每天午夜运行。

我一直在寻找能够做到这一点的事情而且我一无所获。

6 个答案:

答案 0 :(得分:19)

您可以使用PHP脚本并在cpanel上使用cron作业。

示例:

cronjobcommand.php

<?php 
 include 'your_db_connection';
 mysql_query("DELETE FROM your_table_name WHERE Date < NOW()");
?>

我已在下面附上截图供您参考。

enter image description here

答案 1 :(得分:4)

对于那些在共享主机上的人,比如1and1,并且不能使用cron,这里有两个选择:

  • mysql events使您可以在mysql上放置一个时间触发器,它将在您需要时执行,而不必被任何类型的用户输入触发

  • 如果因为你在1and1上而无法创建mysql事件:(另一种方法是使用webcron

你只需要告诉webcron你想要运行的php脚本的url,它们会以你想要的间隔为你触发

答案 2 :(得分:3)

为什么每天都要使用cronjobs?为什么不在输出上过滤数据。例如,在您的选择检查中,如果发布日期等于今天,则添加简单的where

SELECT * FROM `posts`
WHERE (DATE(`post_date`) = DATE(NOW()));

这样您就不会必需在任何特殊时间执行数据库管理/ cronjobs,它将仅用于数据库管理。之后您可以使用mysql命令删除不必要的数据 ,如:

DELETE FROM `posts` WHERE (
    DATE(`post_date`) < DATE(NOW())
)

答案 3 :(得分:2)

大多数主机提供cron(8)服务,可以在特定时间执行命令。您可以使用crontab(1)程序来管理描述何时运行哪些命令的crontab(5)文件。

你可以使用很多功能,但是如果你编写一个运行相应MySQL命令的程序(shell脚本,php脚本,C程序,等等),你可以通过cron(8)调用该程序。完全不干涉时尚。

运行crontab -e以编辑您当前的crontab(5)文件。如果不存在,希望你会得到一个有用的标题。如果没有,请复制:

# m h  dom mon dow   command

列指示执行命令的分钟,小时,月,日和星期几。列中的所有数字基本上都是AND,以决定何时运行命令。

因此,每晚的午夜都会是这样的:

0 0 * * * /path/to/executable

它非常灵活,所以在文档中加入一些时间,你会发现它有很多用途。

答案 4 :(得分:0)

您应该为其设置cron作业(预定大头钉)。

cron job是Linux和Unix操作系统的自动程序设置。它允许用户在特定的时间和日期执行多个命令或功能。

你的cpanel设置中有cron Job。首先,你需要在每个日期之后用你的逻辑制作一个用于删除记录的php脚本。从服务器获取日期并编写脚本以进行删除。

然后转到cpanel中的cron选项卡,并设置运行cron的时间间隔并给出php脚本文件的路径。

答案 5 :(得分:-4)

MySQL没有任务调度程序。因此,您必须使用操作系统的任务调度程序(Linux下的CRON),或者在主页脚本期间(在另一个应该显示更改的页面上)执行基本任务检查器子脚本的午餐数据)。