1

time_stampレコードがデータベースに追加されたときのタイムスタンプと呼ばれるSQLデータベースのフィールドがあります。'TTL'という別のフィールドがあり、1、2、または3のいずれかが格納されます(このフィールド内の各数値は1日を表します)。レコードの削除が「TTL」フィールドによって決定されるphpスクリプトを作成できますか?

たとえば、レコードが今日の正午に追加され、「TTL」が2の場合、2日後の正午に同じレコードを削除するスクリプトを作成できますか?

これを行うための最良の方法は何でしょうか。これを実行するには、本当に両方のフィールドが必要ですか?

4

1 に答える 1

1

このスクリプトを実行するための最良の方法は、スクリプトをアタッチしてcron、指定された間隔で実行することです。

次に、レコードの削除をプログラムするには、次のクエリを実行する必要があります。

DELETE FROM records WHERE UNIX_TIMESTAMP(time_stamp) + TTL * 86400 <= CURRENT_TIMESTAMP()

time_stampはレコード作成値です。たとえば、1000000に等しいとします。86400は1日の秒数です。ファイルを削除するTTLまでの日数です。time_stampしたがって、TTLが2で、1000000が7月10日のタイムスタンプである場合、基本的に次のように比較します。

1000000 + 86400 * 2 <= CURRENT_TIMESTAMP

さて、今日は7月12日だとしましょう。これは、7月10日から2日(86400 * 2秒)であることを意味します。したがって、

CURRENT_TIMESTAMP = July 10th timestamp + 2 days worth of seconds
                  = 1000000 + 86400 * 2

これCURRENT_TIMESTAMP >= 1000000 + 86400 * 2は、7月12日以降のすべての時点で、レコードを削除することを意味します。

これにより、サーバーの実行中にレコードが毎日削除されます。楽しんで頑張ってください!

于 2012-07-12T19:21:54.190 に答える