[project info] Optimierungen für die Statistik 1.1

rellek

relativ sensationell
Teammitglied
Hi,

diese Infos könnten interessant sein, vor allem wenn die Statistik auf einem *etwas* größerem Board betrieben wird.

Es wird bei der überwiegenden Anzahl der Aufrufe einer Forenseite eine DB-Abfrage eingespart. Es geht konkret um die Ermittlung der aktiven Benutzer im Forum. Die Abfrage ist zwar jetzt nicht mehr ganz so genau, wie sie ursprünglich war, aber dafür viel besser für den Server. Sie wird nämlich nur noch ausgeführt, wenn sich an dem Wert auch wirklich etwas ändert.
Im Anhang ist auch noch eine aktualisierte statistics.php, diese hat glaub ich einen Bug gefixt und auch in sich noch eine kleinere Optimierung.

Anwendung auf eigene Gefahr! Die Änderungen werden auch in der Statistik 1.2 (oder wie auch immer die heißen wird) enthalten sein, aber Näheres kann dazu noch nicht gesagt werden.

Hier die Anleitung:
Code:
./global.php
suche:
list($result) = $db->query_first("SELECT COUNT(*) AS count FROM bb".$n."_users WHERE lastactivity >='$today';");

löschen

suche:
$db->query("UPDATE bb".$n."_statistics SET users=$result,hits=hits+1 WHERE date>=$today;");

ersetze durch:
$db->query("UPDATE bb".$n."_statistics SET hits=hits+1 WHERE date>=$today;");

./login.php
suche:
$db->unbuffered_query("DELETE FROM bb".$n."_sessions WHERE userid = '$result[userid]'", 1);

davor einfügen:
		$today = mktime(0,0,0, date("m", time()), date("d", time()), date("Y", time()));
		if($result['userid'] != 0 && $result['lastactivity'] < $today) $db->query("UPDATE bb".$n."_statistics SET users=users+1 WHERE date>=$today;");


./register.php
suche:
$db->query("UPDATE bb".$n."_sessions SET userid = '".$insertid."', styleid='".intval($r_styleid)."', langid='".intval($r_langid)."' WHERE sessionhash = '$sid'");

davor einfügen:
$today = mktime(0,0,0, date("m", time()), date("d", time()), date("Y", time()));
$db->query("UPDATE bb".$n."_statistics SET users=users+1 WHERE date>=$today;");


./acp/lib/session.php

suche:
$db->unbuffered_query("DELETE FROM bb".$n."_sessions WHERE userid = '$session[userid]'", 1);

davor einfügen:
			$today = mktime(0,0,0, date("m", time()), date("d", time()), date("Y", time()));
			if($wbbuserdata['userid'] != 0 && $wbbuserdata['lastactivity'] < $today) $db->query("UPDATE bb".$n."_statistics SET users=users+1 WHERE date>=$today;");

Und hier die statistics.php:
 

Anhänge

  • statistics.zip
    4,4 KB · Aufrufe: 21
Oben