Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erklärung, wie man Benutzer-Online-Zeitstatistiken in PHP implementiert

Ausführliche Erklärung, wie man Benutzer-Online-Zeitstatistiken in PHP implementiert

高洛峰
高洛峰Original
2016-11-30 13:28:351792Durchsuche

Stellen Sie zunächst die beteiligte Datentabellenstruktur vor, vier Felder:
Der Code lautet wie folgt:
uid: Benutzer-ID
session_id: Benutzer PHP kann die Funktion session_id() verwenden, um die vom System nach der Anmeldung generierte session_id abzurufen.
login_time: Anmeldezeit
logout_time: Abmeldezeit

1. Der Client sendet regelmäßig Anfragen an den Server. Die Implementierungsmethode besteht darin, UID, Sitzungs-ID und Anmeldezeit in einen Datensatz einzufügen, nachdem sich der Benutzer angemeldet hat, und dann einen Timer im Client-JS festzulegen, z. B. alle 10 Minuten eine Anforderung an den Server zu senden, um den Zweck der Aktualisierung der Abmeldezeit zu erreichen Je kürzer das Intervall eingestellt ist, desto genauer können die Daten sein, aber die entsprechende Systemlast wird entsprechend der tatsächlichen Situation höher sein. Diese Methode wird häufig in Webspielen verwendet, da es sich bei fast allen Anfragen in Webspielen um Ajax-Anfragen handelt und keine Notwendigkeit besteht, die Seite zu aktualisieren. Sobald die Seite aktualisiert wird, verliert der Timer seinen Wert, was auch die Einschränkung dieser Methode darstellt.

2. Richten Sie ein geplantes Abfrageskript auf dem Server ein. Bei dieser Methode wird auf der Serverseite ein geplantes Ausführungsskript geschrieben, das beispielsweise alle 5 Minuten ausgeführt wird. Basierend auf den Datensätzen in der Datenbank wird beurteilt, ob die Sitzungs-ID jeder Sitzung noch vorhanden ist , logout_time wird aktualisiert. Wenn es nicht vorhanden ist, wird es übersprungen. Dadurch kann auch die Online-Zeit genau gezählt werden, der Nachteil besteht jedoch darin, dass Sie die Kontrolle über den Server haben müssen, da Sie sonst kein Zeitskript festlegen können. Linux-Systeme können dies über crontab tun, und Windows-Systeme können dies über geplante Aufgaben tun. Wenn Sie gerade einen virtuellen Host gekauft haben, ist diese Methode auch nicht für Sie geeignet.

3. Aktualisieren Sie die Abmeldezeit jedes Mal, wenn der Benutzer eine Aktivität ausführt. Auf diese Weise ist die Abmeldezeit natürlich in der Datenbank vorhanden, wenn der Benutzer inaktiv ist oder sich abmeldet. Dies ist auch die Lösung, auf die sich dieser Artikel konzentriert. Die Implementierungsmethode ist unten angegeben.
Nachdem sich der Benutzer erfolgreich angemeldet hat, notieren Sie zunächst seine UID und Sitzungs-ID, verwenden Sie die aktuelle Zeit als Anmeldezeit und die aktuelle Zeit von 600 Sekunden als Abmeldezeit und fügen Sie sie in die Datenbank ein.
Der Code lautet wie folgt:
Kopieren Sie den Code. Der Code lautet wie folgt:
$uid = $_SESSION[uid] = $info[id]; = session_id();
$login_time = time();
$logout_time = time() 600;
$sql = „INSERT INTO member_login (uid,session_id,login_time,logout_time)“ $session_id,$login_time,$ logout_time)";
mysql_query($sql);

Dann jedes Mal, wenn der Benutzer handelt, das heißt, jedes Mal, wenn er auf eine Seite klickt, wenn die Sitzung existiert, das Wenn er angemeldet ist, wird die Abmeldezeit des Benutzers aktualisiert.
Der Code lautet wie folgt:
if($_SESSION[uid]){
$uid = $_SESSION[uid]; session_id = $_SESSION[session_id];
$logout_time = time() 600;
$sql = "UPDATE member_login SET logout_time=$logout_time WHERE uid=$uid AND session_id=$session_id"; $sql);
}

Diese Methode Der Vorteil besteht darin, dass sie relativ einfach zu implementieren ist, auf die meisten Websites angewendet werden kann, keine zusätzlichen Serveranforderungen erfordert und auch die Online-Zeit der Benutzer genau zählen kann.

Die Nachteile liegen ebenfalls auf der Hand. Es erhöht den Datenbankaktualisierungsvorgang und erhöht die Systemlast, sollte jedoch für kleine und mittlere Websites kein Problem darstellen.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn