Seite 1 von 1
Online-Liste im cache ?
Verfasst: 10.04.2008 02:45
von djchrisnet
kann mir jemand erklären, was in 3.0.1 an der onlineliste geändert wurde? nach einem Login dauert es ca. 1-3 seiten aktualisierungen bis ich in der online liste bin.
Werden die nun gecached oder wie?
Verfasst: 10.04.2008 02:54
von Metzle
Hallo,
ich kann das bestätigen von djchrisnet. Bei mir braucht es auch mal mindestens eine Aktualisierung, bis ich in der Liste erscheine.
Verfasst: 10.04.2008 03:43
von djchrisnet
Ich war so frei und hab selbst geschaut. JA die in der functions.php seit 3.0.1 neu hinzugekommenen funktionen
obtain_guest_count und
obtain_users_count cachen die ergebnisse der SQL Abfrage für Users 30 Sekunden und für Gäste 60 Sekunden lang. meines erachtens zwar sinnvoll, aber irgendwie Iritiert das sehr, wenn man sich anmeldet, aber nicht in der Liste auftaucht. immerhin schauen die meisten mich eingeschlossen erstmal ob der Login wirklich geklappt hat. bzw. es könnten user auf die Idee eines Fehlers ihrerseits kommen.
Deshalb werde ich in den nächsten Tagen einen Mod veröffendlichen, der dieses Verhalten steuert und und per ACP konfiguriert! Und dabei auch trotz langem caching neue User beim abmelden oder anmelden neu einliest.
hier die Codeänderungen zum permanenten deaktivieren des cachings:
Öffne
includes/functions.php:
Finde:
Code: Alles auswählen
$result = $db->sql_query($sql, 60);
$guests_online = (int) $db->sql_fetchfield('num_guests');
$db->sql_freeresult($result);
ersetze gegen:
Code: Alles auswählen
$result = $db->sql_query($sql);
$guests_online = (int) $db->sql_fetchfield('num_guests');
$db->sql_freeresult($result);
Finde:
Code: Alles auswählen
$sql = 'SELECT s.session_user_id, s.session_ip, s.session_viewonline
FROM ' . SESSIONS_TABLE . ' s
WHERE s.session_time >= ' . ($time - ((int) ($time % 30))) .
$reading_sql .
' AND s.session_user_id <> ' . ANONYMOUS;
$result = $db->sql_query($sql, 30);
Ersetze gegen:
Code: Alles auswählen
$sql = 'SELECT s.session_user_id, s.session_ip, s.session_viewonline
FROM ' . SESSIONS_TABLE . ' s
WHERE s.session_time >= ' . ($time - ((int) ($time % 30))) .
$reading_sql .
' AND s.session_user_id <> ' . ANONYMOUS;
$result = $db->sql_query($sql);
Danke fürs Lesen