Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neue Beiträge oder nicht - Wie?



Tomarus
16.04.2005, 22:33
Moin,
ich habe mir heute mal wieder ein paar Gedanken um mein Forum gemacht bzw. ein wenig daran gearbeitet, und stieß wieder einmal über diese Frage: Wie kann man es realisieren, dass beim Forenuser erkannt wird, ob in einem Thread neue Beiträge vorhanden sind oder nicht?

Für jeden User und jeden Post ein Gelesen / Ungelesen in einer Datenbank, einer Session- oder Cookievariable, einer Textdatei oder sonstwo zu speichern, wäre wohl deutlich zu aufwendig und speicherplatzraubend, denke ich. Auch für jeden User und jedes Forum / jeden Thread / jede Threadseite den Zeitpunkt des letzten Aufrufs zu speichern wäre nicht unbedingt platzsparender ... wären hier im Ring (/ Ding >_>) ja zum Beispiel bei ersterer Methode gute 15 Milliarden Einträge, und selbst wenn man nur 1 und 0 speichert, zwingt das wohl so manche Datenbank in die Knie ... und auch als User würde ich nicht unbedingt gern für 15 000 Threads Cookies auf dem Rechner haben.

Mehr Lösungsansätze fallen mir aber nicht ein >_> Hat hier irgendjemand eine Idee, so etwas schonmal gemacht oder irgendwann mal die Scripts des vB auswendig gelernt? Würde mich jetzt gerade sehr interessieren, wie sowas zu realisieren ist ...

dead_orc
17.04.2005, 06:31
Forensuche sagt ich nur...
Ich habe diese Frage auch gestellt und eben diese Antworten bekommen. Man könnte die Datenbank vielleicht dadurch entlasten, dass man alle Einträge für Beiträge, die vor dem letzten Logoff geschrieben wurden, wieder löscht. Dadurch könnte man die Größe durchaus auf ca. 10.000 beschränken, was trotzdem für viele Datenbanken zu viel wäre. Ich bin gespannt, ob dir jemand helfen kann. Ich habe diese Funktion auf jeden Fall nicht integriert.

Manni
17.04.2005, 07:08
Ich würde einfach überprüfen, wann der User das letzte Mal da war und alle Postings seit diesem Zeitpunkt als neu und ungelesen anzeigen. Das ist zwar evtl ein wenig oberflächlich, dafür verbraucht es aber so gut wie keinen Platz in der Datenbank. Man könnte das ganze noch verbessern, indem man diese Zeit für jedes Forum speichert. Dann würden das noch etwas genauer...

Latency
17.04.2005, 07:09
Ich würde es versuchen, die Zeit deines letzen "Mark-as-read" in der Datenbank festzuhalten und alle Einträge die jünger sind als ungelesen markieren.

Die markierung ob du diesen neuen Thread schon reingesehen hast würde ich dann als temporäres cookie auf dem Client hinterlassen, und zwar nachdem du in den Thread reingeschaut hast. So würde sich die Datenbanklast, sowie der "Cookieverbrauch" in grenzen halten, IMHO.

dadie
17.04.2005, 10:08
Also ich würde das ganze so Realisieren bzw. hatte es damals (vor meiem Festplatten crash Arrg) so realisiert.

Also zunägst ist wichtig das ale Datums daten über den Unix Time befehlt gesätz werdne also in der SQL Datenbank "Timestamp" nun legen wir eine Neue datei ein ich habe sie
"read_post.php" genant die dann kurz nach der config einfügen über include.

In dieser werden nun daten abgefragt also

1,Alle Post / Topic vor der Registrierung sind gelesen
2,Alle vor dem Letzten Logout snd auch gelesen.
3,Rest ungelesen

So doch wie realisieren wir da ? Wie speichern wir ab das es schon gelesen wurde ? Ich habe es über seesion abgespeichert.Zuerst habe ich mit den Anforderungen da oben alle Topic/Post ID´s ausgelesen und nachgeprüfft nun speicher ich sie in der Session ab.

Wenn die in der URL angegeben ID mit einer Session ID identisch ist wird sie gelöscht/mit einem wert vn 1 Abgehackt aus der Session (Post gelesen).

Aber was wenn nun währen man on ist Neue Topic kommen ?
Nun wir kontrolieren einfach welche beiträge nach dem Login geschreiben wurde welche aber nicht in der Session stehen.Diese werden automatisch reingeschreiben und mit einem wert von 0 beschreiben.

Leider hatte dieses System irgenteinen BUG bei mir ^^° warum weiss ich aber leider nett mehr -.-