当时间是午夜时,做一个mysql_query

时间:2014-03-25 21:29:18

标签: php mysql date time updates

所以我有一段代码应该在午夜重置日期(motd)的消息,我的目标是一旦到达午夜时间(格林尼治标准时间00:00:00)它重置了消息一天回到原来的状态。到目前为止,我已经尝试了以下内容:

if (gmdate('H:i:s') === '00:00:00') { mysql_query(//execute code) }

所有建议都表示赞赏。谢谢。

编辑:忘了提到我的网站是从名为nitrousnetworks而不是localhost的webhost托管的。这会影响什么吗?

Edit-2:在cPanel X中找到了一个cron作业部分。我已经将它设置为在午夜时分每24小时运行一次,但是我在Command:部分放了什么?

编辑-3:谢谢你们,我相信我现在已经得到了它:)

3 个答案:

答案 0 :(得分:1)

我建议您使用cronjob /脚本。

在某些主机上,他们有一个功能可供您轻松设置cronjob。否则你可以自己检查一下如何做 - 如果需要的话。

How to write a Cron Job to execute simple php script? How to create cron job using PHP?

编辑;也像有人评论,使用mysqli而不是mysql。

答案 1 :(得分:1)

这样您就可以选择强烈建议的cron触发的php脚本,这是另一种解决方案:您可以设置MySQL scheduled event

CREATE EVENT reset_motd
ON SCHEDULE AT '2014-03-25 00:00:00' + INTERVAL 1 DAY
DO UPDATE ...

当然,如果数据库中的所有输入都可用于定义的事件,这只是一个解决方案。

答案 2 :(得分:1)

这种任务的最佳解决方案可能是Cron Job

您的解决方案的问题在于它取决于访问您网站的用户到00:00:00。女巫是一个非常糟糕的设计。

另一个解决方案是让当午夜之后的第一个用户访问您的网站时重置邮件。

一个例子就是这样:

<?php
   $today = new DateTime("today");
   $result = $mysqli->query("SELECT * FROM firstVisit WHERE date='" . $today->format("Ymd") "'");

   if($result->num_rows == 0){
        $mysqli->query("INSERT INTO firstVisit (`date`) VALUES('" . $today->format("Ymd") . "')");

        //Do your update
   }
?>