Du bist nicht angemeldet (anmelden)
Seite 1
x neue Antworten seit dem letzten Besuch
Hallo liebe Superphpler.
Vorgeschichte:
Ich habe letztes Jahr, für ein paar Freunde und mich, ein kleines Forum in PHP geschrieben. Bei der Auflistung der Artikel wird natürlich auch die Anzahl der ungesenen Artikel angezeigt. Ganz nach dem Motto:

[Quelle: supertopic.de]
Umsetzung:
Ich habe eine Tabelle in der Datenbank, u.a. mit den Feldern topic_id, user_id, last_visited.
Jedesmal, wenn ein Benutzer auf ein Thema zugreift, wird die jeweilige Reihe angelegt oder aktualisiert.
Das nutze ich natürlich auch alles für die Ausgabe der ungelesenen Themen in der Auflistung/Übersicht.
Problem / Frage:
Mittlerweile sind 24 Bentuzer an Board und 434 Themen eröffnet worden. Wenn ich in die Datenbank schaue, sind das natürlich ganz schön viele Reihen, die für meine Methode benötigt werden.
Jetzt wollte ich fragen: Wie macht man das besser? Wie verringert man die Transaktionen?
Habe mir natürlich schon ein paar Gedanken gemacht. Zum Beispiel mit Cookies, aber das wären ja dann auch ein Haufen.
Ich stehe ein bisschen auf dem Schlauch. Ideas anyone?
Vorgeschichte:
Ich habe letztes Jahr, für ein paar Freunde und mich, ein kleines Forum in PHP geschrieben. Bei der Auflistung der Artikel wird natürlich auch die Anzahl der ungesenen Artikel angezeigt. Ganz nach dem Motto:

[Quelle: supertopic.de]
Umsetzung:
Ich habe eine Tabelle in der Datenbank, u.a. mit den Feldern topic_id, user_id, last_visited.
Jedesmal, wenn ein Benutzer auf ein Thema zugreift, wird die jeweilige Reihe angelegt oder aktualisiert.
Das nutze ich natürlich auch alles für die Ausgabe der ungelesenen Themen in der Auflistung/Übersicht.
Problem / Frage:
Mittlerweile sind 24 Bentuzer an Board und 434 Themen eröffnet worden. Wenn ich in die Datenbank schaue, sind das natürlich ganz schön viele Reihen, die für meine Methode benötigt werden.
Jetzt wollte ich fragen: Wie macht man das besser? Wie verringert man die Transaktionen?
Habe mir natürlich schon ein paar Gedanken gemacht. Zum Beispiel mit Cookies, aber das wären ja dann auch ein Haufen.
Ich stehe ein bisschen auf dem Schlauch. Ideas anyone?
Editiert: 31.03.10, 15:49 Uhr
phloo schrieb am 31.03.10, 14:59 Uhr:
Naja, du wirst immer maximal Useranzahl*Themenanzahl als Reihen haben.
Das ist doch in Ordnung so.
Das wollte ich wissen. Danke.
Mich hat es nur interessiert, weil ich mir gedacht habe das diese Methode ein richtiger Performancefresser sein könnte und man das optimieren könnte.
... oder ob man das aucch ganz anders machen kann.
Das Thema gabs schon mal vor Jahren in nem anderen Forum. Die beste Antwort war: „Schau wie es andere Foren-CMS lösen“.
Ich weiß, hilfreich...
Ich weiß, hilfreich...
JanB schrieb am 31.03.10, 15:56 Uhr:
Das Thema gabs schon mal vor Jahren in nem anderen Forum. Die beste Antwort war: „Schau wie es andere Foren-CMS lösen“.
Ich weiß, hilfreich...
Ja, bin gerade dabei mich durch den vanilla- und bbpress-code zu forsten.
mit dem thema habe ich mich auch schon beschäftigt, aber leider keine optimale lösung gefunden.
mich würde mal interessieren, wie das hier bei supertopic gelöst ist.

mich würde mal interessieren, wie das hier bei supertopic gelöst ist.
Das Datenbank Schema ist schon okay (falls du nen Index gesetzt hast). Wichtig ist, dass die Query optimiert ist ...
Wäre es nicht am einfachsten das Datum des Letzten Logins in der User-Tabelle zu speichern, bei erneutem Login in die Session zu schreiben und dann einfach ein Count bei jedem Thread auf PostIDs > Timestamp zu machen? Dann brauchst du dafür keine extra Tabelle.
Das wäre eine andere Zählweise. Hier geht es darum, wann er das letzte Mal diesen bestimmten Thread besucht hat und wieviele Antworten es seitdem gibt.
Lugat schrieb am 04.04.10, 03:00 Uhr:
Wäre es nicht am einfachsten das Datum des Letzten Logins in der User-Tabelle zu speichern, bei erneutem Login in die Session zu schreiben und dann einfach ein Count bei jedem Thread auf PostIDs > Timestamp zu machen? Dann brauchst du dafür keine extra Tabelle.
man bräuchte dann aber schon ne eigene tabelle, wo man user-id, thread-id und last-visited-timestamp speichert.
klingt aber nach ner guten lösung
honsey schrieb am 04.04.10, 11:03 Uhr:
Lugat schrieb am 04.04.10, 03:00 Uhr:
Wäre es nicht am einfachsten das Datum des Letzten Logins in der User-Tabelle zu speichern, bei erneutem Login in die Session zu schreiben und dann einfach ein Count bei jedem Thread auf PostIDs > Timestamp zu machen? Dann brauchst du dafür keine extra Tabelle.
man bräuchte dann aber schon ne eigene tabelle, wo man user-id, thread-id und last-visited-timestamp speichert.
klingt aber nach ner guten lösung
genau, sonst schaut man sich ein topic an und bekommt dann in der übersicht alle als „gelesen“ angezeigt. oder?
