我想清除SQL数据库中一周前的所有条目,并且希望每晚都进行此操作。因此,我将设置一个cron作业。如何在不手动输入密码的情况下查询mySQL?
PHP中的查询如下:
mysql_query("DELETE FROM tbl_message WHERE DATEDIFF( NOW( ) , timestamp ) >=7");
有没有一种方法可以将它作为Shell脚本运行?如果不能,有没有办法让cron运行PHP文件?
尝试创建一个像下面这样的shell脚本:
#!/bin/bash
mysql --user=[username] --password=[password] --database=[db name] --execute="DELETE FROM tbl_message WHERE DATEDIFF( NOW( ) , timestamp ) >=7"
然后您可以将此添加到cron中。
event_scheduler
选项在这方面是一个改进,因为它既包含在数据库中,而且其安装可以完全受版本控制作为迁移脚本。 - kungphu这取决于您的系统中运行cron的方式,但要从cron运行php脚本,您只需要调用php安装位置并跟随脚本位置即可。以下是每小时运行crontab的示例:
# crontab -e
00 * * * * /usr/local/bin/php /home/path/script.php
00 * * * * php /home/path/script.php
另外,除非您正在使用较旧的php安装程序,否则不应使用mysql扩展,因为它已被弃用。请在此处进行比较。