2

行の最後の更新から経過した時間をチェックする cronjob を作成する方法を見つけようとしています。それが X を超えている場合は、フィールド「ACTIVE」を「FALSE」に変更します。

現在の IP を更新し、タイムスタンプを追加するロボットがあります。

反対側から、ロボットにコマンドを送ろうとするユーザーがいるかもしれません。私の考えは、ロボットが最後の X 秒間アクティブであったかどうかを判断できるようにすることです。したがって、ロボットにコマンドを送信することは理にかなっています。

したがって、current_time() - field_time >= X の次に changeValue('ACTIVE')<- False かどうかをチェックするある種のスクリプトを推測します。

これを X 秒ごとに DB で直接実行できますか? それとも、この問題を処理するためのより良い方法として、PHP でスクリプトを使用するのでしょうか? (無限にループするスクリプト)

4

1 に答える 1

1

MySQLスケジューリングでこれを試してください:

  DELIMITER $$
  CREATE EVENT deactivation
    ON SCHEDULE EVERY 10 MINUTE STARTS CURRENT_TIMESTAMP
    DO
      BEGIN
        UPDATE tbl SET tbl.active = FALSE
           WHERE tbl.active = TRUE AND 
           ( TIME_TO_SEC( TIMEDIFF (NOW(),tbl.updated) ) / 60 ) > 10;
      END;
  $$;

タイムスタンプはどこtbl.updatedにありますか (php で生成)。私のテストボックスは atm に到達できないため、このクエリが正しいかどうかはわかりませんが、一般的にはうまくいくはずです。

于 2013-10-20T12:17:46.797 に答える