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