Una solución para contar los usuarios en línea actuales
Al construir un sitio web de comunicación en línea, hay un problema que me hace sentir muy preocupado, que se trata de estadísticas en tiempo real de usuarios en línea. Requisitos del cliente: Cuente el número actual de usuarios en línea, el número de turistas, el número de miembros y la lista de usuarios en línea, incluidos turistas, miembros y administradores (si son turistas, la identificación de los turistas se generará automáticamente y, si son miembros, el nombre del miembro se mostrará). Debido a que requiere en tiempo real, primero pasaré la idea de resolverlo con Global.asa.
La clave del problema es cómo decir que el usuario se ha ido y cómo ejecutar un archivo o una función cuando el usuario se va.
Después de la discusión con algunos amigos en línea, este problema finalmente se resolvió.
La solución es: escribir una página general. La llamada página general significa que cada página de la aplicación contiene esta página, por ejemplo: Header.asp. En esta página, escriba una pieza de código usando xmlhttp. El propósito de este código es enviar una solicitud al servidor cada 10 segundos o 20 segundos. El propósito es actualizar la hora en línea del usuario actual y eliminar a los usuarios cuyo tiempo en línea ha excedido un cierto período de tiempo, de modo que los registros de usuarios en línea en la base de datos mantienen un cierto tiempo real en tiempo real.
Los principales métodos de implementación son:
Cree una nueva base de datos, los nombres de campo son: ID (carácter), nombre (carácter), usuario (número) TT (fecha), admin (código de permiso, usuario 0-ordinario, 1-admin))
Nombre de la tabla: en línea
encabezado.asp ↓
===========================================================================================================================================
<%
......
ifsession ("s_in") <> 1andsession ("s_name") = "", entonces, si el usuario está iniciando sesión por primera vez
Rs.open "Seleccionar*Fromline", Conn, 3,3
Rs.addnew
rs ("id") = session.sessionID
RS ("Nombre") = "Invitado" y Session.SessionID
RS ("Usuario") = 0'0 significa que el usuario no ha iniciado sesión y es la identidad del turista
rs ("tt") = ahora
rs.
rs.
sesión ("s_in") = 1''set La información del usuario se ha almacenado en la base de datos, lo que indica que ha estado en línea
endif
ifsession ("s_name") <> "", entonces, si el usuario ha iniciado sesión a través del cuadro de inicio de sesión
Rs.open "Seleccionar*de LinewhereID = '" & Session.SessionId & "'", Conn, 3,3
RS ("Nombre") = Session ("S_name")
rs ("admin") = session ("s_admin") 'Actualice el nombre del usuario al nombre del miembro
RS ("usuario") = 1 'significa que el usuario ha iniciado sesión y es miembro
rs ("tt") = ahora''t el tiempo actual del sistema para el tiempo de inicio de sesión del usuario
rs.
rs.
endif
......
%>
......
<Evista>
......
<scriptLanguage = javaScript>
functionTest ()
{
varxmlhttp = newActivexObject ("msxml2.xmlhttp");
xmlhttp.open ("post", "OnceOnline.asp", falso); // Enviar solicitud de actualización a OnceOnline.asp
xmlhttp.setRequestHeader ("Content-type", "Application/x-www-form-urlencoded");
xmlhttp.send ();
}
setInterval ("test ();", 10); // Enviar una solicitud de actualización en 10 segundos
</script>
......