2013-10-20 6 views
2

행의 마지막 업데이트 이후 경과 한 시간을 확인하는 cronjob을 찾는 방법을 찾고 있습니다. X 이상인 경우 ' ACTIVE '를'FALSE '로 설정하십시오.MySQL - 활동이없는 X 분 후에 필드 값을 변경하십시오.

나는 현재 IP를 업데이트하고 타임 스탬프를 추가하는 로봇을 가지고있다.

다른 쪽에서는 로봇에 명령을 보내려는 사용자가있을 수 있습니다. 내 아이디어는 로봇이 마지막 X 초 동안 활성화되었는지 여부를 알 수 있기 때문에 명령을 보내려는 것이 의미가 있습니다.

따라서 current_time() - field_time> = X이면 changeValue ('ACTIVE')가 아닌지 확인하는 일종의 스크립트라고 생각합니다. < - False.

DB에서 매 X 초마다 직접 수행 할 수 있습니까? 아니면 PHP에서이 문제를 처리하는 더 좋은 방법을 스크립트를 사용하여? (무한 루프 스크립트)

+0

이벤트 만들기 Create – Mihai

답변

1

MySQL을 scheduling와 함께이 일을보십시오 : tbl.updated는 (PHP로 생성)하여 타임 스탬프

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; 
    $$; 

입니다. 내 testbox가 atm에 도달 할 수 없기 때문에 이 쿼리가 맞는지는 모르지만 일반적으로 작업을 수행해야합니다.

+0

답장을 보내 주셔서 감사합니다! "TIME_TO_SEC (TIMEDIFF (NOW(), tbl.updated))"에서 오류가 발생합니다. 구문은 정확하지만 (예, tabblename.updatedfield로 tbl.updated를 변경했습니다. 작업 중 : "SELECT TIME_TO_SEC (TIMEDIFF (NOW(), updated))/60 FROM tbl"은 작동하지만 – N3sh

+0

OK, 문제는 BEGIN/END였습니다. – N3sh