현재 온라인 사용자를 계산하는 솔루션
온라인 커뮤니케이션 웹 사이트를 구축 할 때 온라인 사용자의 실시간 통계에 관한 문제가 발생하는 문제가 있습니다. 고객 요구 사항 : 관광객, 회원 및 관리자를 포함하여 현재 온라인 사용자 수, 관광객 수, 회원 수 및 온라인 사용자 목록을 세십시오 (관광객 인 경우 관광객의 ID가 자동으로 생성되며 회원이면 회원 이름이 표시됩니다). 실시간이 필요하기 때문에 먼저 Global.asa와 함께 해결한다는 아이디어를 전달합니다.
문제의 핵심은 사용자가 떠났다고 말하는 방법과 사용자가 떠날 때 파일 또는 함수를 실행하는 방법입니다.
온라인에서 일부 친구들과 논의한 후이 문제는 마침내 해결되었습니다.
해결책은 다음과 같습니다. 일반 페이지를 작성하십시오. 소위 일반 페이지는 응용 프로그램의 각 페이지 에이 페이지가 포함되어 있음을 의미합니다 (예 : header.asp). 이 페이지에서 XMLHTTP를 사용하여 코드를 작성하십시오. 이 코드의 목적은 10 초 또는 20 초마다 서버에 요청을 보내는 것입니다. 목적은 현재 사용자의 온라인 시간을 업데이트하고 온라인 시간이 특정 기간을 초과 한 사용자를 삭제하여 데이터베이스의 온라인 사용자 레코드가 특정 실시간 실시간을 유지하도록하는 것입니다.
주요 구현 방법은 다음과 같습니다.
새 데이터베이스 생성, 필드 이름은 다음과 같습니다. id (문자), 이름 (문자), 사용자 (번호) tt (date), admin (허가 코드, 0-ordinary 사용자, 1-admin)입니다.
테이블 이름 : 온라인
header.asp ↓
===========================================================================================================================
<%
......
ifsession ( "s_in") <> 1 및 1 및 Session ( "s_name") = ""그러면 사용자가 처음 로그인하는 경우
Rs. "Select*Fromline", Conn, 3,3
rs.addnew
rs ( "id") = session.sessionId
rs ( "name") = "Guest"& session.sessionid
RS ( "사용자") = 0'0은 사용자가 로그인되지 않았으며 관광객의 신원임을 의미합니다.
rs ( "tt") = 지금
Rs.update
Rs.Close
세션 ( "S_IN") = 1'SET 사용자의 정보가 데이터베이스에 저장되어 온라인 상태임을 나타냅니다.
endif
ifsession ( "s_name") <> "" "그러면 사용자가 로그인 상자를 통해 로그인 한 경우
Rs. Open "Select*FromlinewhowsID = '"& Session.SessionID & "', Conn, 3,3
rs ( "이름") = 세션 ( "s_name")
rs ( "admin") = session ( "s_admin") '사용자 이름을 멤버 이름으로 업데이트합니다
rs ( "사용자") = 1 '은 사용자가 로그인했으며 회원임을 의미합니다.
rs ( "tt") = 이제 현재 시스템 시간을 사용자의 로그인 시간으로 설정합니다.
Rs.update
Rs.Close
endif
......
%>
......
<헤드>
......
<scriptLanguage = javaScript>
functiontest ()
{
varxmlhttp = newActivexObject ( "msxml2.xmlhttp");
xmlhttp.open ( "post", "exectonline.asp", false); // alfeonline.asp에 업데이트 요청을 보냅니다
xmlhttp.setrequestheader ( "content-type", "application/x-www-form-urlencoded");
xmlhttp.send ();
}
setInterVal ( "test ();", 10); // 10 초 안에 업데이트 요청을 보냅니다
</스크립트>
......