자동출석 로직관련 좋은 아이디어 없을까요?
본문
자동출석을 구현하려고 하는데 아이디어 조언을 구하고자 합니다.
일반적인 생각은 로그인 로직에 자동출석 함수를 만들면 그부분은 어찌 저찌 해결될 것 같은데
문제는 자동로그인 되어 있는 유저들 이네요
특정 페이지에 머물러 있다가 로그인을 시도 하지 않고
불특정 페이지 이동만 하고 출석, 로그인 모두 신경 안쓴다는 가정을 하면 조금 로직이 고민됩니다.
처음 아이디어는 사이트에 글로버 페이지 하나에 자동출석 함수를 부르게 해야 할 것 같아서 그걸 생각했습니다.
그런데 그러면 매번 자동출석을 체크해서 서버에 부하가 갈 것 같기도 하고
하루에 한 번만 체크하게 하면 될 것 같긴 한데 그럼 필드를 하나 또 만들어야 하나요? 만들지 않고는 안되나요?
복합적인데 제 머리가 나빠서 딱히 번뜩이는게 없네요
좋은 아이디어가 있을까요?
답변 4
1 일반 로그인은 제외 => 로그인시 자동 출석 체크
2. 자동 로그인
2-1 처음 자동인 로그인 시점을 체크 ( 자동 출석도 함께함 )
2-2 다음에 접속시 처음 로그인된 날짜와 시간을 ( 24간을 기준으로 )계산해서 넘겼으면
다음날 로그인한 걸로 인정 => 자동 출석 체크
2-3 기준 날짜 이전이면 하루가 지나지 않았으니 출석 시키지 않음
2-4 그누보드는 자동로그인 경우 쿠키를 이용하게 되어 있음
그 부분을 잘 확인하면 문제 해결에 가깝게 다가갈 듯
3. 출석 여부는 디비 멤버 필드나 혹은 출석부의 필드를 이용해서 체크 출석부 자체를 모두 써칭 하는것
보다는 부하가 덜 걸림
4. 세션 쿠키 이용 ( 디비 쿼리하는 것 보다 세션이나 쿠키를 불러오는게 부하도에서 유리하고 속도도 빠름)
4-1 자동 출석시 세션과 쿠키를 구워서
일정 시간이 지나고 페이지를 접근해도 자동로그인 여부와 함께 출석 여부를 했는지도 체크
요약 :
1.시간을 기점으로 자동로그인 기준 시간이 지났는지를 통해 포인트나 자동로그인 또는 자동로그 아웃을 한다
2. 쿠키나 세션을 이용하고 쿼리를 위한 필드를 하나 선택해서 자동 출석을 했는지를 확인하게 한다
저 같으면 위와 같은 조건이나 흐름도를 생각한 다음 만들것 같습니다
서버
요청이 보내진 클라이언트에게 출석체크 관련 쿠키가 없을 경우 서버시간 기준 현재 ~ 당일 23:59:59 까지 expire 를 가지는 쿠키 생성과 동시에 출석체크 (중복 요청이 들어올수도 있는 케이스도 가정해 INSERT IGNORE 또는 ON DUPLICATE KEY 로 안전처리)
클라이언트
출석체크 관련 쿠키값이 있으면 아무행동도 안하고 없으면 서버로 출석 요청을 보내는 로직을 매 [초 or 분 or 시] 마다 수행 (setInterval / setTimeout 관련 함수)
자동로그인이 common.php 단에서 자동로그인 처리를 하니 로그인 부분과 자동로그인 로직에 출석체크 기능을 적용되도록 처리하시면 될듯 보입니다.
이해가 안가는 질문이네요.
퇴근을 안하신분이 어떠게 출근을 하나요?
일정시간 지나면 로그인했던 정보를 없애야죠.