2014-03-25 70 views
0

所以我有一段代碼應該在午夜重置日期(motd)的消息,我的目標是一旦到達午夜(格林威治標準時間00:00:00)它將當天的信息重置爲原始狀態。到目前爲止,我已經嘗試了以下內容:當時間是午夜做一個mysql_query

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

所有的建議表示讚賞。謝謝。

編輯:忘了提及我的網站是從一個叫做nitrousnetworks而不是本地主機的webhost託管的。這會影響到什麼嗎?

編輯2:在cPanel X中找到了一個cron作業部分。我已將它設置爲每隔24小時在午夜運行,但是我在Command:部分放置了哪些內容?

編輯-3:三江源一切,我相信我有得到它現在:)

+2

我會強烈建議cron作業。我還強烈建議使用'mysql_ *'函數的最上面的一行,並使用PDO或mysqli。 – Brad

+0

^的確,您可以設置@daily cron作業。現在它已經每天晚上在午夜運行,不需要在php中執行檢查。 – skrilled

+0

Cronjob是你在找什麼。 –

回答

1

那麼我建議你使用的cronjob /腳本這一點。

在一些主機上,他們有一個功能可供您輕鬆設置cronjob。否則,你可以自己檢查如何做 - 如果需要的話。

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

編輯;也像有人評論說的,使用mysqli而不是mysql。

+0

嗨,感謝您的快速響應。也謝謝你的鏈接,我相信我現在對cronjob有一點點的瞭解。然而,我將如何使它在00:00:00執行? – MyiWorld

1

只要你擁有的強烈建議cron觸發php紙條替代,這裏是一個其他的解決辦法:你可以設置一個MySQL scheduled event

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

當然,這僅僅是一個解決方案,如果你有你可用於定義事件的數據庫中的輸入。

1

這類任務的最好的解決方案可能是一個cron作業

與您的解決方案的問題在於,它依賴於訪問您的網站正好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 
    } 
?>