MySQL - 在X分钟不活动后更改字段值

时间:2013-10-20 11:55:24

标签: php mysql cron-task

我正试图找到一种方法来使用cronjob来检查自上次更新行以来已经过了多长时间,如果它超过X,则将字段'ACTIVE'更改为'FALSE'。

我有一个机器人,它会更新当前的IP并添加时间戳。

另一方面,可能有用户愿意向机器人发送命令。我的想法是能够判断机器人是否在最后X秒内处于活动状态,因此尝试向其发送命令是有意义的。

所以,我猜某种脚本会检查current_time() - field_time> = X然后是changeValue('ACTIVE')< - False。

这可以每隔X秒直接在DB上完成吗?或者也许在PHP中使用脚本更好的方法来处理这个问题? (一个无限循环的脚本)

1 个答案:

答案 0 :(得分:1)

尝试使用MySQL scheduling执行此操作:

  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, 我不确定这个查询是否正确,但一般情况下,它应该完成这项工作。