我不知道从哪里开始:
我有一个存储postID
和Date
的数据库。
我想要做的是让我的网站自动删除Date
小于今天的所有行。此脚本根本不能有任何用户输入。没有按钮点击,没有。脚本必须每天午夜运行。
我一直在寻找能够做到这一点的事情而且我一无所获。
答案 0 :(得分:19)
您可以使用PHP脚本并在cpanel上使用cron作业。
示例:
cronjobcommand.php
<?php
include 'your_db_connection';
mysql_query("DELETE FROM your_table_name WHERE Date < NOW()");
?>
我已在下面附上截图供您参考。
答案 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),或者在主页脚本期间(在另一个应该显示更改的页面上)执行基本任务检查器子脚本的午餐数据)。