x neue Antworten seit dem letzten Besuch

 


marcus_a
Veteran

31.03.10
14:53 Uhr
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.

Spoiler (anzeigen):

verständlich geschildert? ouw

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?
Link zu diesem Beitrag in die Zwischenablage kopieren
marcus_a
Veteran

31.03.10
14:54 Uhr
Irrelevanter Beitrag (anzeigen):

Link zu diesem Beitrag in die Zwischenablage kopieren
phloo
Veteran

31.03.10
14:59 Uhr
Naja, du wirst immer maximal Useranzahl*Themenanzahl als Reihen haben.
Das ist doch in Ordnung so.
Link zu diesem Beitrag in die Zwischenablage kopieren
marcus_a
Veteran

31.03.10
15:41 Uhr
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.
Link zu diesem Beitrag in die Zwischenablage kopieren
JanB
Veteran

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...
Link zu diesem Beitrag in die Zwischenablage kopieren
marcus_a
Veteran

31.03.10
16:18 Uhr
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. )
Link zu diesem Beitrag in die Zwischenablage kopieren
scopey
Stammgast

03.04.10
19:51 Uhr
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. -)-)-)
Link zu diesem Beitrag in die Zwischenablage kopieren
webflo
Dauergast

03.04.10
21:22 Uhr
Das Datenbank Schema ist schon okay (falls du nen Index gesetzt hast). Wichtig ist, dass die Query optimiert ist ...
Link zu diesem Beitrag in die Zwischenablage kopieren
Lugat
Dauergast

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.

Spoiler (anzeigen):

Oder verstehe ich gerade etwas falsch planlos
Link zu diesem Beitrag in die Zwischenablage kopieren
phloo
Veteran

04.04.10
03:07 Uhr
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.
Link zu diesem Beitrag in die Zwischenablage kopieren
honsey
Gast

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.

Spoiler (anzeigen):

Oder verstehe ich gerade etwas falsch planlos

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
Link zu diesem Beitrag in die Zwischenablage kopieren
marcus_a
Veteran

04.04.10
21:56 Uhr
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.

Spoiler (anzeigen):

Oder verstehe ich gerade etwas falsch planlos

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? ouw
Link zu diesem Beitrag in die Zwischenablage kopieren
marcus_a
Veteran

04.04.10
22:00 Uhr
Irrelevanter Beitrag (anzeigen):

Link zu diesem Beitrag in die Zwischenablage kopieren
 
#