2010-11-29 82 views
1

在我的數據庫表中,我有一個名爲'start_datetime'的DATETIME字段。基於時間間隔檢索記錄列表(PHP/MySQL)

的時間部分是基於5周分鐘的間隔總是存儲,沒有秒,例如:十五點25分00秒或12時10分○○秒或17時30分〇〇秒

現在我需要設置CRON任務將在'start_datetime'前2天發出電子郵件。

有幾個問題在這裏:

1)所有我需要一個「start_datetime」這正是前2天現在看來找到的所有記錄的第一個(即運行查詢的時間)

2)它應該忽略任何超過或少於2天的記錄。考慮到時間是基於5分鐘的時間間隔,我只能假設CRON任務必須每5分鐘運行一次?這可能是一個問題,因爲我的託管服務提供商只允許CRON每小時運行一次。

那麼最好的方法是什麼?

回答

1

難道真的那麼重要,它是精確到5分鐘的間隔,或者它是可以接受的發送電子郵件提前55分鐘?

如果是這樣,您可以運行一個查詢,選擇將在下一個小時內擊中該2天標記的所有記錄。

查詢會是這個樣子:(快速ñ髒,未經測試)

SELECT * FROM table 
    WHERE CURRENT_TIMESTAMP >= DATESUB(startDate, INTERVAL 49 HOUR) 
    AND CURRENT_TIMESTAMP < DATESUB(startDate, INTERVAL 48 HOUR); 
+0

大聲笑好點!我認爲說實話不重要!那麼這個SQL查詢會是什麼呢? – GSTAR 2010-11-29 15:51:43

0

由於您每小時只能運行一次cron,因此您只能選擇發送所選值的電子郵件WHERE start_datetime是BETWEEN 2天,2天和1小時,或者您可以設置一個Web服務女巫會每5分鐘從你自己的電腦用cron調用,但這不是推薦的。

0

您的提供程序是否允許無限的腳本執行時間?如果是這樣,您可以創建一個腳本,每五分鐘通過休眠功能查詢數據庫。

功能:

http://php.net/manual/en/function.sleep.php

僞代碼:

function query_db() { 
    //query code 
} 

for($i = 1; $i <= 60; $i++) { 
    query_db(); 
    sleep(300); 
}