Eine Lösung, um aktuelle Online -Benutzer zu zählen
Beim Erstellen einer Online-Kommunikations-Website gibt es ein Problem, das mich sehr beunruhigt fühle, bei dem es um Echtzeitstatistiken von Online-Benutzern geht. Kundenanforderungen: Zählen Sie die aktuelle Anzahl der Online -Benutzer, die Anzahl der Touristen, die Anzahl der Mitglieder und die Liste der Online -Benutzer, einschließlich Touristen, Mitglieder und Administratoren (wenn es sich um Touristen handelt, wird die ID der Touristen automatisch generiert, und wenn sie Mitglieder sind, wird der Name des Mitglieds angezeigt). Da es in Echtzeit erforderlich ist, werde ich zuerst die Idee übergeben, es mit global.asa zu lösen.
Der Schlüssel zum Problem ist, wie der Benutzer gegangen ist und wie eine Datei oder eine Funktion ausgeführt wird, wenn der Benutzer geht.
Nach der Diskussion mit einigen Online -Freunden wurde dieses Problem endgültig gelöst.
Die Lösung lautet: Schreiben Sie eine allgemeine Seite. Auf der sogenannten allgemeinen Seite enthält jede Seite in der Anwendung diese Seite, z. B. Header.asp. Schreiben Sie auf dieser Seite einen Code mit XMLHTTP. Der Zweck dieses Codes besteht darin, alle 10 Sekunden oder 20 Sekunden eine Anfrage an den Server zu senden. Ziel ist es, die Online-Zeit des aktuellen Benutzers zu aktualisieren und Benutzer zu löschen, deren Online-Zeit einen bestimmten Zeitraum überschritten hat, sodass die Online-Benutzeraufzeichnungen in der Datenbank eine bestimmte Echtzeit in Echtzeit führen.
Die wichtigsten Implementierungsmethoden sind:
Erstellen Sie eine neue Datenbank, die Feldnamen sind: ID (Zeichen), Name (Zeichen), Benutzer (Nummer) TT (Datum), Administrator (Berechtigungscode, 0-Word-Benutzer, 1-admin)
Tabellenname: online
Header.asp ↓
===========================================================ieben
<%
......
ifSession ("s_in") <> 1AndSession ("s_name") = "" Wenn sich der Benutzer zum ersten Mal anmeldet
Rs.open "Select*Fromline", Conn, 3,3
rs.addnew
RS ("ID") = Session.SessionId
RS ("Name") = "Gast" & Session.SessionId
RS ("Benutzer") = 0'0 bedeutet, dass der Benutzer nicht angemeldet ist und die Identität des Touristen ist
rs ("tt") = jetzt
Rs.Update
rs.close
Sitzung ("s_in") = 1'Set Die Informationen des Benutzers wurden in der Datenbank gespeichert, was darauf hinweist, dass sie online waren
Endif
ifSession ("s_name") <> "", dann hat sich der Benutzer durch das Anmeldefeld angemeldet
rs.open "SELECT*From linewhereId = '" & Session.SessionID & "'", Conn, 3,3
RS ("Name") = Session ("S_Name")
RS ("admin") = session ("s_admin") 'Aktualisieren Sie den Namen des Benutzers auf den Mitgliedsnamen
RS ("Benutzer") = 1 'bedeutet, dass sich der Benutzer angemeldet hat und Mitglied ist
RS ("TT") = Now 'setzen Sie die aktuelle Systemzeit für die Anmeldezeit des Benutzers
Rs.Update
rs.close
Endif
......
%>
......
<kopf>
......
<scriptuanguage = javaScript>
Funktionstest ()
{
varXmlHttp = newActActActXObject ("msxml2.xmlhttp");
xmlhttp.open ("post", "onoNline.asp", false); // Aktualisierungsanforderung an onaNoNline.asp senden
xmlhttp.setRequestheader ("Content-Typ", "Anwendung/x-www-form-urlencoded");
xmlhttp.send ();
}
setInterval ("test ();", 10); // Senden Sie eine Aktualisierungsanforderung in 10 Sekunden
</script>
......