navis
Mysql 시간별 자동 실행 본문
728x90
관리자 페이지를 만들었는데 사용자가 많지 않으 것 으로 판단 RDBMS를 그대로 사용하기로하고
리플레시 토큰 테이블을 만들었다.
그러나 여기서 문제는 로그아웃을 하면 리플레시 토큰이 모두 제거가 될텐데 사용자가 로그아웃이 아닌 창을 닫아서 제거가 되지 않는 리플레시 토큰이 남는다는 것!!
이를 해결 하기위해 처음에는 이벤트를 만들어야 하나 했지만
이런.. Mysql에 기능이 다 있다니....;;
리플레시토큰의 유효시간을 8시간으로 주고 정해진 시간마다 현재 시간과 유효시간을 비교!!
유효시간이 만료된 토큰은 자동 삭제되는 방법이다!!
고민하지마라!! 사람의 욕심은 끝이없기에 이미 원하는 기능들은 다있다!!
-- 리플레시 토큰 자정에 자동 삭제
SET GLOBAL event_scheduler = ON;
CREATE EVENT IF NOT EXISTS delete_expired_tokens_07
ON SCHEDULE EVERY 1 DAY STARTS TIMESTAMP(CURRENT_DATE, '07:00:00')
DO
DELETE FROM REFRESH_TOKENS WHERE expiry_date < NOW();
CREATE EVENT IF NOT EXISTS delete_expired_tokens_19
ON SCHEDULE EVERY 1 DAY STARTS TIMESTAMP(CURRENT_DATE, '19:00:00')
DO
DELETE FROM REFRESH_TOKENS WHERE expiry_date < NOW();
CREATE EVENT IF NOT EXISTS delete_expired_tokens_21
ON SCHEDULE EVERY 1 DAY STARTS TIMESTAMP(CURRENT_DATE, '21:00:00')
DO
DELETE FROM REFRESH_TOKENS WHERE expiry_date < NOW();
CREATE EVENT IF NOT EXISTS delete_expired_tokens_00
ON SCHEDULE EVERY 1 DAY STARTS TIMESTAMP(CURRENT_DATE, '00:00:00')
DO
DELETE FROM REFRESH_TOKENS WHERE expiry_date < NOW();
-- 조회
SELECT EVENT_NAME, EVENT_SCHEMA, EVENT_DEFINITION, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS
FROM INFORMATION_SCHEMA.EVENTS
WHERE EVENT_NAME = 'delete_expired_tokens_07';
'RDBMS' 카테고리의 다른 글
MySql 공공데이터 xml 파일 테이블에 데이터 저장하기 (0) | 2024.06.21 |
---|---|
MySql 계정생성 및 권한 부여 (0) | 2024.03.14 |