2010-11-29 34 views
1

私のデータベーステーブルには、「start_datetime」というDATETIMEフィールドがあります。時間間隔に基づいてレコードのリストを取得する(PHP/MySQL)

は、時刻部分は常に例えば、無秒で、5分間隔に基づいて保存されている:午前15時25分00秒または12時10分00秒または午前17時30分00秒

は、今私はセットアップする必要があります'start_datetime'のまさに2日前にメールを送信するCRONタスク。

問題のカップルがここにあります

1)私はちょうど2日NOW前にある「start_datetime」(を持つすべてのレコードを検索するために必要なすべての最初のクエリを実行している時IE)

2)2日以上経過したレコードは無視してください。時間は5分間隔に基づいていることを考慮すると、私はCRONタスクを5分ごとに実行しなければならないと仮定できますか?これは、私のホスティングプロバイダがCRONを1時間に1回だけ実行できるようにするため、問題である可能性があります。

これに最も近い方法は何ですか?

答えて

1

は、それが5分間隔まで正確であるか、それを送信するために許容可能であることを本当にすることが重要ですメールを最大55分早く送信しますか?

もしそうなら、次の1時間以内にその2日のマークに当たるすべてのレコードを選択するクエリを実行できます。 (クイックnは汚い、テストされていない)

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

笑良い点:

クエリは次のようになります!私はそれが正直であることが重要ではないと思います!だから、これのSQLクエリは何ですか? – GSTAR

+1

コード例を使って答えを更新しました:) –

0

cronを1時間に1回だけ実行できるので、start_datetimeが2日間と2日1時間の間に選択された値の電子メールを送信するオプションがあります。または、Webサービスの魔女cronを使って自分のPCから5分ごとに呼び出されますが、推薦されません。

0

プロバイダは無制限のスクリプト実行時間を許可しますか?その場合、スリープ機能を使用して5分ごとにデータベースに照会するスクリプトを作成することができます。

機能:

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

擬似コード:

function query_db() { 
    //query code 
} 

for($i = 1; $i <= 60; $i++) { 
    query_db(); 
    sleep(300); 
} 
関連する問題