Une solution pour compter les utilisateurs en ligne actuels
Lors de la création d'un site Web de communication en ligne, il y a un problème qui me fait me sentir très troublé, qui concerne les statistiques en temps réel des utilisateurs en ligne. Exigences des clients: comptez le nombre actuel d'utilisateurs en ligne, le nombre de touristes, le nombre de membres et la liste des utilisateurs en ligne, y compris les touristes, les membres et les administrateurs (s'ils sont des touristes, l'ID des touristes sera automatiquement généré et s'ils sont membres, le nom du membre sera affiché). Parce que cela nécessite en temps réel, je passerai d'abord l'idée de le résoudre avec Global.asa.
La clé du problème est de savoir comment indiquer que l'utilisateur est parti et comment exécuter un fichier ou une fonction lorsque l'utilisateur quitte.
Après discussion avec des amis en ligne, ce problème a finalement été résolu.
La solution est: écrivez une page générale. La page dite générale signifie que chaque page de l'application contient cette page, par exemple: header.asp. Dans cette page, écrivez un morceau de code à l'aide de XMLHTTP. Le but de ce code est d'envoyer une demande au serveur toutes les 10 secondes ou 20 secondes. Le but est de mettre à jour l'heure en ligne de l'utilisateur actuel et de supprimer les utilisateurs dont le temps en ligne a dépassé une certaine période de temps, afin que les enregistrements d'utilisateurs en ligne de la base de données conservent un certain temps réel en temps réel.
Les principales méthodes de mise en œuvre sont:
Créez une nouvelle base de données, les noms de champ sont: id (caractères), nom (caractère), utilisateur (numéro) TT (date), administrateur (code d'autorisation, utilisateur 0-ordinaire, 1 admin)
Nom du tableau: en ligne
en-tête ↓
=======================================================================================.
<%
......
ifSession ("s_in") <> 1AndSession ("S_NAME") = "" alors'f l'utilisateur se connecte pour la première fois
Rs.open "SELECT * FROMLINE", Conn, 3,3
Rs.Addnew
rs ("id") = session.SessionId
rs ("nom") = "invité" et session.SessionId
RS ("utilisateur") = 0'0 signifie que l'utilisateur n'est pas connecté et est l'identité du touriste
rs ("tt") = maintenant
Rs.Update
Rs.Close
Session ("s_in") = 1'set Les informations de l'utilisateur ont été stockées dans la base de données, indiquant qu'elle a été en ligne
endire
ifSession ("s_name") <> "" alors'f l'utilisateur s'est connecté via la zone de connexion
Rs.open "SELECT * FROMlinewhered = '" & session.SessionId & "'", Conn, 3,3
rs ("name") = session ("s_name")
rs ("admin") = session ("s_admin") 'Mettez à jour le nom de l'utilisateur au nom du membre
rs ("utilisateur") = 1 'signifie que l'utilisateur s'est connecté et est membre
rs ("tt") = désormais le temps du système actuel à l'heure de connexion de l'utilisateur
Rs.Update
Rs.Close
endire
......
%>
......
<adal>
......
<ScriptLanguage = JavaScript>
functiontest ()
{
varxmlhttp = newActiveXObject ("msxml2.xmlhttp");
xmlhttp.open ("Post", "anyOnline.asp", false); // Envoyez la demande de mise à jour à une fois
xmlhttp.setRequestHeader ("contenu-type", "application / x-www-form-urlencoded");
xmlhttp.send ();
}
setInterval ("test ();", 10); // Envoyez une demande de mise à jour en 10 secondes
</cript>
......