-3

15分ごとにデータベースからデータを削除するphpスクリプトがあります。

データベーステーブルには、フィールドが変更されるたびに現在のタイムスタンプを格納するフィールド timestamp があります。

15分ごとに、現在の時刻とタイムスタンプフィールドに保存されている値の違いを確認したいと思います。

試してみましたif((time()-$row['timestamp'])>900)//( 900 は秒です)

タイムスタンプフィールドには現在の時刻とともに日付も格納されるため、これは機能しません。どうすればいいですか

4

4 に答える 4

3

時間を MySQLTIMESTAMPデータ型で保存する場合は、データを操作する MySQL 関数を使用するのが最善TIMESTAMPです。TIMESTAMPDIFF()結果の単位を定義することもできるため、非常に適しています。

SELECT TIMESTAMPDIFF(MINUTE, `my_timestamp_column`, NOW()) FROM `my_table`

valueから経過した分数 (整数) を返しmy_timestamp_columnます。これを PHP cron スクリプトと組み合わせるか、単にページ上のすべてのリクエストと組み合わせて、目的を達成します。

DELETE FROM `my_table`
WHERE TIMESTAMPDIFF(MINUTE, `my_timestamp_column`, NOW()) > 15

さらに、他の解決策については、マニュアルの日付と時刻の関数セクションをお読みください。

于 2012-05-28T09:16:53.633 に答える
2

データベースを使用してこれを完全に処理するのが最も簡単です。CURR_TIME を使用して現在のタイムスタンプを取得し、TIMEDIFF() を使用して条件を生成します

于 2012-05-28T08:50:18.170 に答える
2

$row['timestamp']値をフォーマットで保存すると述べました。datetimeしたがって、タイムスタンプに変換するには、strtotime()関数を使用します。だから今あなたのコードは、

if((time()-strtotime($row['timestamp']))>900) //( 900 is the seconds)

これが役立つことを願っています

于 2012-05-28T08:53:49.027 に答える
2

SQL でも実行できます。

DELETE FROM `table` WHERE `timestamp` < UNIX_TIMESTAMP() - 60 * 15
于 2012-05-28T08:54:33.860 に答える