我想从1周以上的所有人中清除我的SQL数据库,我想每晚都这样做 . 所以,我打算 Build 一个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
我个人觉得使用MySQL事件调度程序比使用cron更容易 .
启用它
SET GLOBAL event_scheduler = ON;
并创建一个这样的事件:
CREATE EVENT ON SCHEDULE EVERY 1 DAY STARTS '2014-01-18 00:00:00' DO DELETE FROM tbl_message WHERE DATEDIFF( NOW( ) , timestamp ) >=7;
就是这样 .
阅读有关语法的更多信息here和here是有关它的更多常规信息 .
这取决于你的系统上运行cron的是什么,但是你要从cron运行php脚本所要做的就是调用php安装的位置,然后调用脚本位置 . 每小时运行crontab的示例:
# crontab -e 00 * * * * /usr/local/bin/php /home/path/script.php
在我的系统上,我甚至不必将路径放到php安装中:
00 * * * * php /home/path/script.php
另一方面,您不应该使用mysql扩展,因为它已被弃用,除非您使用较旧的php安装 . Read here进行比较 .
这是一个非常方便的页面,因为我要求从mySQL表中删除记录,其中有效期为<今天 .
我在共享主机上,CRON不喜欢AndrewKDay的建议 . 它还说(并且我同意)以这种方式暴露密码可能是不安全的 .
然后,我尝试在phpMyAdmin中启用事件,但再次在共享主机上,这是不行的 . 对不起fancyPants .
所以我转而将SQL脚本嵌入到PHP文件中 . 我用了这个例子[这里] [1]
[1]:https://www.w3schools.com/php/php_mysql_create_table.asp将它存储在安全的某个子文件夹中,并添加了一个空的index.php以便进行测量 . 然后我能够测试这个PHP文件(和我的SQL脚本)是否在浏览器URL行中运行 .
到目前为止都很好 . 到CRON . 按照上面的例子几乎可以工作 . 我最终在我的* .php文件的路径之前调用PHP . 否则CRON不知道如何处理该文件 .
我的cron设置为每天运行一次,看起来像这样,为安全起见进行了修改 .
00 * * * * php mywebsiteurl.com/wp-content/themes/ForteChildTheme/php/DeleteExpiredAssessment.php
对于使用CRON的最终测试,我最初将其设置为每分钟运行一次并启用电子邮件警报 . 这很快就证实它按计划运行,我每天更换一次 .
希望这可以帮助 .
4 回答
尝试创建如下所示的shell脚本:
然后,您可以将其添加到cron
我个人觉得使用MySQL事件调度程序比使用cron更容易 .
启用它
并创建一个这样的事件:
就是这样 .
阅读有关语法的更多信息here和here是有关它的更多常规信息 .
这取决于你的系统上运行cron的是什么,但是你要从cron运行php脚本所要做的就是调用php安装的位置,然后调用脚本位置 . 每小时运行crontab的示例:
在我的系统上,我甚至不必将路径放到php安装中:
另一方面,您不应该使用mysql扩展,因为它已被弃用,除非您使用较旧的php安装 . Read here进行比较 .
这是一个非常方便的页面,因为我要求从mySQL表中删除记录,其中有效期为<今天 .
我在共享主机上,CRON不喜欢AndrewKDay的建议 . 它还说(并且我同意)以这种方式暴露密码可能是不安全的 .
然后,我尝试在phpMyAdmin中启用事件,但再次在共享主机上,这是不行的 . 对不起fancyPants .
所以我转而将SQL脚本嵌入到PHP文件中 . 我用了这个例子[这里] [1]
[1]:https://www.w3schools.com/php/php_mysql_create_table.asp将它存储在安全的某个子文件夹中,并添加了一个空的index.php以便进行测量 . 然后我能够测试这个PHP文件(和我的SQL脚本)是否在浏览器URL行中运行 .
到目前为止都很好 . 到CRON . 按照上面的例子几乎可以工作 . 我最终在我的* .php文件的路径之前调用PHP . 否则CRON不知道如何处理该文件 .
我的cron设置为每天运行一次,看起来像这样,为安全起见进行了修改 .
00 * * * * php mywebsiteurl.com/wp-content/themes/ForteChildTheme/php/DeleteExpiredAssessment.php
对于使用CRON的最终测试,我最初将其设置为每分钟运行一次并启用电子邮件警报 . 这很快就证实它按计划运行,我每天更换一次 .
希望这可以帮助 .