运行mySQL查询作为cron作业?

Pao*_*olo 32 php mysql shell cron

我想从1周以上的所有人中清除我的SQL数据库,我想每晚都这样做.所以,我打算建立一个cron工作.如何在不必每次手动输入密码的情况下查询mySQL?

PHP中的查询如下:

mysql_query("DELETE FROM tbl_message WHERE DATEDIFF( NOW( ) ,  timestamp ) >=7");
Run Code Online (Sandbox Code Playgroud)

有没有办法将其作为shell脚本运行?如果没有,有没有办法让cron运行一个php文件?

fan*_*nts 82

我个人觉得使用MySQL事件调度程序比使用cron更容易.

启用它

SET GLOBAL event_scheduler = ON;
Run Code Online (Sandbox Code Playgroud)

并创建一个这样的事件:

CREATE EVENT name_of_event
ON SCHEDULE EVERY 1 DAY
STARTS '2014-01-18 00:00:00'
DO
DELETE FROM tbl_message WHERE DATEDIFF( NOW( ) ,  timestamp ) >=7;
Run Code Online (Sandbox Code Playgroud)

就是这样.

了解更多关于语法这里这里是有关它的更多的一般信息.

  • 这应该是答案! (2认同)
  • 这是正确答案 (2认同)

And*_*Day 42

尝试创建如下所示的shell脚本:

#!/bin/bash

mysql --user=[username] --password=[password] --database=[db name] --execute="DELETE FROM tbl_message WHERE DATEDIFF( NOW( ) ,  timestamp ) >=7"
Run Code Online (Sandbox Code Playgroud)

然后,您可以将其添加到cron

  • 它还取决于您是否要在不必要的地方传播数据库凭据.`event_scheduler`选项在这方面有所改进,因为它既包含在数据库中,也可以作为迁移脚本完全由版本控制. (3认同)
  • 这个答案和我的一样好.这取决于你是否想通过php做到这一点. (2认同)
  • 这是一个糟糕的答案。您应该使用以下答案来使用 MySQL 事件调度程序。 (2认同)

miy*_*oro 9

这取决于你的系统上运行cron的是什么,但是你要从cron运行php脚本所要做的就是调用php安装的位置,然后调用脚本位置.每小时运行crontab的示例:

# crontab -e
00 * * * * /usr/local/bin/php /home/path/script.php
Run Code Online (Sandbox Code Playgroud)

在我的系统上,我甚至不必将路径放到php安装中:

00 * * * * php /home/path/script.php
Run Code Online (Sandbox Code Playgroud)

另一方面,您不应该使用mysql扩展,因为它已被弃用,除非您使用较旧的php安装. 请阅读此处进行比较.