Cron在大型MySQL数据库中检查日期

时间:2012-07-07 13:03:09

标签: php mysql cron

我有一个数据库,各个表中大约有8个字段是日期,如果它们即将或已经过期,则需要每天检查这些数据。

我想使用CRON Job来实现这一点,但请记住,数据库最终可能会有50,000行。运行检查所有日期的脚本很可能会超时。

我在考虑将搜索脚本分割成块。所以它将运行几千行然后停止。然后五分钟后从它离开的位置开始,通过查询数据库中存储上次完成位置的字段。一旦它遍历所有行就停止了。

但我不知道脚本是否明智甚至可能在5分钟内再次运行。

任何建议都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

您不必在整个表格上运行。您可以直接运行查询吗?

SELECT something FROM tbl_name WHERE NOW() >= date_col;

答案 1 :(得分:0)

使用mysql event scheduler来做到这一点 此代码将创建一个事件,该事件将每天自动执行一次,以从表中删除过时的记录:

DELIMITER //
CREATE EVENT myevent
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
ON COMPLETION PRESERVE
DO BEGIN
 DELETE FROM mytable WHERE col1<NOW();
 DELETE FROM mytable WHERE col2<NOW();
 DELETE FROM mytable WHERE col3<NOW();
 DELETE FROM mytable WHERE col4<NOW();
 DELETE FROM mytable WHERE col5<NOW();
 DELETE FROM mytable WHERE col6<NOW();
 DELETE FROM mytable WHERE col7<NOW();
 DELETE FROM mytable WHERE col8<NOW();
END//
DELIMITER ;

文档:
CREATE EVENT
BEGIN...END