XE에서 사용할건 아니고 그누보드에서 사용하려고 하는데
소켓을 사용하지않고 사용자가 현재 사이트에 접속중인지 아니면 홈페이지를 떠났는지 여부를 판단할수 있는 방법이 있을까요?
PHP | PHP 7.4 |
---|---|
CMS | Rhymix 2.x |
XE에서 사용할건 아니고 그누보드에서 사용하려고 하는데
소켓을 사용하지않고 사용자가 현재 사이트에 접속중인지 아니면 홈페이지를 떠났는지 여부를 판단할수 있는 방법이 있을까요?
개인적으로 사용하는 방법은
애드온으로 페이지 이동시 회원 로그인 확인용 테이블에 해당 회원의 로우 타임 컬럼에 시간을 저장합니다.
불필요한 반복 작업을 피하기 위해 세션을 이용해서 1분 간격으로 저장을 합니다.
해당 테이블에서 저장된 시간 기준으로 최근시간 기준 10분 으로 해서 위젯에 현재 접속자로 출력해 주거나 혹은 db에서 10분 이내의 회원의 회원번호를 가져와 해당 배열에 글쓴이 등의 회원번호가 있다면 현재 접속자로 표시해주거나 하는 등 다양하게 활용하고 있습니다.
접속여부 확인은 회원만 하고 있습니다.
10분 이전의 기록까지 접속으로 간주해서 떠난지 10분이 된 회원까지 현재접속으로 취급합니다.
예전과 달리 요즘은 "백그라운드 탭"이라는 변수도 있습니다. 어딘가에 탭을 열어놓기만 하고 일주일이고 한 달이고 확인하지 않는 거죠. 요즘은 컴퓨터를 종료하는 일이 드물고 절전모드만 드나드니까, 웬만해선 브라우저 탭이 닫힐 일이 없어요. 사용자는 이 사이트가 존재한다는 사실 자체를 한 달 전에 잊어버렸는데, 소켓이든 핑이든 뭔가를 계속 연결해 두고 있다면 접속자로 간주되는 문제가 있겠지요.
1초만에 브라우저를 껐을 때, 홈페이지라는 것이 아에 그냥 페이지만 보여주고 서버와는 통신을 하지 않기때문에 그 뒤의 기록이 없거든요.
즉 홈페이지와 연결된 소통창구를 지속적으로 연결해두는 방식을 이용해야 하는데 그 방식 자체가 소켓이거든요.
다만 어느페이지를 보는지 홈페이지에 얼마나 들어와 활동하고 있는지를 알 수 있는 방법으로는 그누보드의 현재 접속자 관련 기능으로 처리하시면 됩니다.
아니면 구글애널리틱스 관련 기능도 있고요.