我正试图找到一种方法来使用cronjob来检查自上次更新行以来已经过了多长时间,如果它超过X,则将字段'ACTIVE'更改为'FALSE'。
我有一个机器人,它会更新当前的IP并添加时间戳。
另一方面,可能有用户愿意向机器人发送命令。我的想法是能够判断机器人是否在最后X秒内处于活动状态,因此尝试向其发送命令是有意义的。
所以,我猜某种脚本会检查current_time() - field_time> = X然后是changeValue('ACTIVE')< - False。
这可以每隔X秒直接在DB上完成吗?或者也许在PHP中使用脚本更好的方法来处理这个问题? (一个无限循环的脚本)
答案 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,
我不确定这个查询是否正确,但一般情况下,它应该完成这项工作。