온라인 커뮤니케이션을 위한 웹사이트를 구축할 때, 고객이 요구하는 온라인 사용자 수, 방문자 수, 회원 수에 대한 실시간 통계에 관한 문제가 있습니다. , 방문자, 회원, 관리회원을 포함한 온라인 이용자 목록(방문자인 경우 방문자 ID가 자동 생성되고, 회원인 경우 회원명이 표시됩니다.) 실시간 성능이 필요하기 때문에 먼저 global.asa를 활용하여 해결한다는 아이디어를 전달하겠습니다.
문제의 핵심은 사용자가 떠났다는 것을 어떻게 판단하고, 사용자가 떠날 때 파일이나 기능을 어떻게 실행하느냐이다.
인터넷에서 몇몇 친구들과 논의한 끝에 마침내 이 문제를 해결했습니다.
솔루션 원칙은 다음과 같습니다. 소위 범용 페이지는 응용 프로그램의 모든 페이지에 이 페이지가 포함되어 있음을 의미합니다(예: header.asp). 이 페이지의 기능은 다음과 같습니다. 코드는 현재 사용자의 온라인 시간을 업데이트하고 온라인 시간이 특정 시간을 초과하는 사용자를 삭제하기 위한 목적으로 10초 또는 20초마다 서버에 요청을 전송하여 데이터베이스의 온라인 사용자 기록이 특정 실제 데이터를 유지하도록 합니다. -시간 성격.
주요 구현 방법은 다음과 같습니다.
새 데이터베이스를 생성합니다. 필드 이름은 다음과 같습니다. id(문자), 이름(문자), 사용자(번호) tt(날짜), admin(인증 코드, 0-일반 사용자, 1-관리자)
테이블 이름 : 온라인
header.asp ↓
========================================== === ================
<%
... ...
if session("s_in")<>1 and session("s_name")="" then 'If
사용자는rs.open "select * from online",conn,3,3
에 한 번 로그인합니다.
rs.addnew
rs("id")=session.sessionID
rs("name")="Guest" & session.sessionID
rs("user")=0 '0은 사용자가 로그인하지 않았으며 방문자임을 의미합니다.
rs("tt")=지금
RS.업데이트
RS.닫기
session("s_in")=1 '사용자 정보가 데이터베이스에 저장되어 온라인 상태임을 나타냅니다.
end if
if session("s_name")<>"" then '사용자가 로그인 상자를 통해 로그인한 경우
rs.open "id='" & session.sessionID & "'",conn,3,3인 온라인에서 *를 선택합니다.
rs("이름")=세션("s_name")
rs("admin")=session("s_admin") '사용자 이름을 구성원 이름으로 업데이트합니다.
rs("user")=1 '사용자가 로그인했으며 회원임을 나타냅니다.
rs("tt")=now '현재 시스템 시간을 사용자의 로그인 시간으로 설정
RS.업데이트
RS.닫기
end if
... ...
%>
... ...
<head>
... ...
<스크립트 언어=javascript>
함수테스트()
{
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
xmlhttp.open("POST","onceonline.asp",false); //onceonline.asp에 업데이트 요청 보내기
xmlhttp.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");
xmlhttp.send();
}
setInterval("Test();",10); //10초마다 업데이트 요청을 보냅니다.
</script>
... ...
</head>
... ...
============================== =============================
onlineonline.asp
<%
rs.open "id='" & session.sessionID & "'",conn,3,3인 온라인에서 tt를 선택합니다.
rs("tt")=now() '현재 온라인 사용자의 온라인 시간을 업데이트합니다.
RS.업데이트
rs.close
rs.open "datediff('s',tt,now())>60인 온라인에서 삭제",conn,3,1 '시간 초과 사용자 삭제
%>
=============================================== ==============
이러한 방식으로 데이터베이스 내 사용자 목록의 실시간 특성은 기본적으로 업데이트 시간과 삭제 시간의 차이에 따라 달라집니다. 삭제 시간이 너무 짧을 경우 온라인 사용자 간에 오류가 발생할 수 있습니다.
이 솔루션은 WIN2000+SQL Server2000에서 디버깅되었습니다. 이 솔루션은 상대적으로 큰 시스템 요구 사항을 갖고 있으므로 다른 친구들이 더 나은 솔루션을 찾아 이 문제를 함께 해결하기를 바랍니다.
내 메일함: [email protected]
내 이름은 "Building Blocks"입니다. 저와 친구가 되실 수 있습니다!