Beim Aufbau einer Website für die Online-Kommunikation gibt es ein Problem, das mir Kopfschmerzen bereitet. Dabei geht es um Echtzeitstatistiken von Online-Benutzern. Der Kunde benötigt: Zählen der aktuellen Anzahl von Personen, die online sind, der Anzahl der Besucher, der Anzahl der Mitglieder und die Liste der Online-Benutzer, einschließlich Besucher, Mitglieder und Verwaltungsmitglied (wenn es sich um einen Besucher handelt, wird die Besucher-ID automatisch generiert, wenn es sich um ein Mitglied handelt, wird der Name des Mitglieds angezeigt). Da es eine Echtzeitleistung erfordert, werde ich zunächst die Idee weitergeben, global.asa zur Lösung zu verwenden.
Der Schlüssel zum Problem besteht darin, festzustellen, ob der Benutzer gegangen ist, und wie eine Datei oder Funktion ausgeführt werden soll, wenn der Benutzer gegangen ist.
Nachdem ich mit einigen Freunden im Internet diskutiert hatte, konnte ich dieses Problem endlich lösen.
Das Lösungsprinzip lautet: Schreiben Sie eine universelle Seite. Dies bedeutet, dass jede Seite in der Anwendung diese Seite enthält, zum Beispiel: header.asp. Schreiben Sie auf dieser Seite einen Code Code ist Alle 10 Sekunden oder 20 Sekunden wird eine Anfrage an den Server gesendet, mit dem Ziel, die Online-Zeit des aktuellen Benutzers zu aktualisieren und Benutzer zu löschen, deren Online-Zeit eine bestimmte Zeit überschreitet, damit die Online-Benutzerdatensätze in der Datenbank eine bestimmte Realität beibehalten -zeitliche Natur.
Die Hauptimplementierungsmethode lautet:
Erstellen einer neuen Datenbank. Die Feldnamen lauten: ID (Zeichen), Name (Zeichen), Benutzer (Nummer), TT (Datum),Tabelle
„Administrator“ (Berechtigungscode, 0-normaler Benutzer, 1-Administrator).
Name:online
header.asp ↓
======================================== === ===============
<%
... ...
if session("s_in")<>1 and session("s_name")="" then 'If Der Benutzer muss sich einmalig bei rs.open anmelden und
„select * from online“,conn,3,3 auswählen
rs.addnew
rs("id")=session.sessionID
rs("name")="Gast" & session.sessionID
rs("user")=0 '0 bedeutet, dass der Benutzer nicht angemeldet ist und ein Besucher ist.
rs("tt")=jetzt
rs.update
rs.close
session("s_in")=1 'Legen Sie fest, dass die Informationen des Benutzers in der Datenbank gespeichert wurden, was darauf hinweist, dass er online ist
end if
if session("s_name")<>"" then 'Wenn sich der Benutzer über das Anmeldefeld angemeldet hat
rs.open "select * from online where id='" & session.sessionID & "'",conn,3,3
rs("name")=session("s_name")
rs("admin")=session("s_admin") 'Aktualisieren Sie den Benutzernamen auf den Mitgliedsnamen
rs("user")=1 'Zeigt an, dass der Benutzer angemeldet ist und Mitglied ist
rs("tt")=now 'Setzt die aktuelle Systemzeit auf die Anmeldezeit des Benutzers
rs.update
rs.close
end if
... ...
%>
... ...
<head>
... ...
<script language=javascript>
functionTest()
{
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
xmlhttp.open("POST","onceonline.asp",false); //Update-Anfrage an Onceonline.asp senden
xmlhttp.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");
xmlhttp.send();
}
setInterval("Test();",10); //Alle 10 Sekunden eine Aktualisierungsanforderung senden
</script>
... ...
</head>
... ...
============================ ============================
Onceonline.asp
<%
rs.open "select tt from online where id='" & session.sessionID & "'",conn,3,3
rs("tt")=now() 'Aktualisieren Sie die Online-Zeit des aktuellen Online-Benutzers
rs.update
rs.close
rs.open "aus dem Internet löschen, wobei datediff('s',tt,now())>60",conn,3,1 'Timeout-Benutzer löschen
%>
============================================== ==============
Auf diese Weise ist die Echtzeitnatur der Benutzerliste in der Datenbank grundsätzlich gewährleistet. Der Fehler hängt von der Differenz zwischen der Aktualisierungszeit und der Löschzeit ab Es wird empfohlen, beim Löschen keine Zeitüberschreitung vorzunehmen. Wenn das Zeitintervall zwischen Benutzern zu klein ist, kann es zu Fehlern bei Online-Benutzern kommen.
Diese Lösung wurde unter WIN2000 + SQL Server2000 debuggt. Da diese Lösung relativ hohe Systemanforderungen stellt, hoffe ich, dass andere Freunde bessere Lösungen finden und dieses Problem gemeinsam lösen!
Mein Postfach: [email protected]
Mein Name ist „Building Blocks“, du bist herzlich eingeladen, mit mir befreundet zu werden!