[Allgemein] "Neue Beiträge vorhanden" Funktion

shenziro

Well-known member
ID: 85537
L
7 Mai 2006
72
8
Hi,

ich sitz hier mit paar Leuten im IRC und wir Fragen uns, wie speichert phpBB, (und wie sie alle heißen), welche Threads bei einem Besuch neu sind und welche nicht.

Es kamen mindestens schon 10 Ideen, jedoch 2 oder 3 mal darüber nachgedacht fällt einem auf, so funktioniert es doch nicht ^^

Das Thema ist etwas für sich, vielleicht weiß es ja jemand zufällig, und ich hoffe das es hier rein passt.

(Das wird jetzt wieder nen Massenknobeln auslösen *hrhr*)

mfg
 
cookies ^^?

ggf. db (where < lastaction)

nich ^^?

Denk mal darüber nach. Sobald du ein Thema gelesen hast, wird dir NUR dieses eine auch als gelesen angezeigt. "(where < lastaction)" fällt somit flach.

Für jedes Thema per Cookies speichern -> werden viele Cookies -> Scheiße
Statt Cookies ne MySQL nehmen -> gänge, nur wieso find ich bei phpBB keine Tabelle dafür :ugly:
 
Für jedes Thema per Cookies speichern -> werden viele Cookies -> Scheiße
Wer sagt denn, das jeder Thread in einen neuen Keks muss ? :hö:

Ich weiß, dass man hier (beim vBulletin) als Administrator verschiedene Einstellungen für diese Problem hat.

Früher war die Einstellung auf eben geschilderte Keks-Lösung gestellt. Nach einer Weile wurden dann die Threads doch als gelesen markiert, weil man nicht beliebig viel im Cookie ablegen kann.
Jetzt ist unsere aktuelle Einstellung dafür auf Datenbank geschaltet, d.h. das Forum legt in der Datenbank ab, welchen Thread ich gelesen hab und welchen nicht.

Wie genau es im Detail funktioniert, weiß ich nicht, da hab ich noch nie nachgesehen, aber hier mein Ansatz:
  • Ich merke mir, wenn jemand das komplette Forum als gelesen markiert.
    Folge: Alles was älter als der letzte MarkReadAll-Timestamp is gelesen.
  • Ich merke mir, wenn jemand ein Einzelforum als gelesen markiert.
    Folge: Alle Threads, die in diesem Einzelforum sind und älter als der letzte MarkReadForum(forumid)-Timestamp sind gelesen
  • Ich merke mir, wenn jemand ein Thema liest, d.h. es als gelesen markiert.
    Folge: Alle Posts aus diesem Thread, die älter als der letzte MarkReadThread(threadid)-Timestamp sind, sind gelesen
Konstanter Aufwand O(1), nämlich genau 3 Abfragen, um festzustellen, ob ein Beitrag gelesen wurde oder nicht.

Zu Optimierungszwecken kann man natürlich die MarkReadForum- und MarkReadThread-Datensätze löschen, wenn jemand alle Forum als gelesen markiert bzw. die MarkReadThread-Datensätze partiell löschen, wenn jemand ein Einzelforum als gelesen markiert.
 
o_O evtl geil auf dein Beiträge-Counter?

nein, bist du´s :p :evil: ?? *ggg (kann man dir bei der off-topic-frage herrlich unterstellen ^^)

ich wollte damit die aussage tätigen (und sry, fühl mich angesprochen, weil war ja der letzte vor dir ^^)

dass ich das verwechselt hab @ "neue beiträge" welch lieblich, wunderbare funktion mir in diversen foren immer anzeigt, welche beiträge seit meinem besuch neu getippelt worden sind.

aber ich werd mich demnächst, extra für dich ;), gewählter ausdrücken, dass das, was ich rüberbringen wollte, auch wirklich ankommt :)

bin jetzt allerdings aufgrund von diversen faktoren nich mehr in der lage, mich durch den phpbb´schen quellcode zu wühlen, um die funktion zu finden.

wobei mich das jetzt echt mal interessieren würde.
(und n beitragszähler interessiert mich herzlich wenig ^^ :p - hab ich nix von. wobei´s da wohl krassere beispiele von "counter-junkies" gibt, und ich mich frag, warum mich das fragst *gg)

(könntest dir ja scherzenshalber erlauben all meine beiträge zu lesen (sind ja noch nich viele) die threads dazu, und du wirst feststellen ich lass viele gelegenheiten aus um was zu tippeln ;) )

wenn ich jetzt n roten popel kassiere weiss ich wenigstens von wem *ggg ^^
 
Zuletzt bearbeitet:
Wer sagt denn, das jeder Thread in einen neuen Keks muss ? :hö:

Ich weiß, dass man hier (beim vBulletin) als Administrator verschiedene Einstellungen für diese Problem hat.

Früher war die Einstellung auf eben geschilderte Keks-Lösung gestellt. Nach einer Weile wurden dann die Threads doch als gelesen markiert, weil man nicht beliebig viel im Cookie ablegen kann.
Jetzt ist unsere aktuelle Einstellung dafür auf Datenbank geschaltet, d.h. das Forum legt in der Datenbank ab, welchen Thread ich gelesen hab und welchen nicht.

Wie genau es im Detail funktioniert, weiß ich nicht, da hab ich noch nie nachgesehen, aber hier mein Ansatz:
  • Ich merke mir, wenn jemand das komplette Forum als gelesen markiert.
    Folge: Alles was älter als der letzte MarkReadAll-Timestamp is gelesen.
  • Ich merke mir, wenn jemand ein Einzelforum als gelesen markiert.
    Folge: Alle Threads, die in diesem Einzelforum sind und älter als der letzte MarkReadForum(forumid)-Timestamp sind gelesen
  • Ich merke mir, wenn jemand ein Thema liest, d.h. es als gelesen markiert.
    Folge: Alle Posts aus diesem Thread, die älter als der letzte MarkReadThread(threadid)-Timestamp sind, sind gelesen
Konstanter Aufwand O(1), nämlich genau 3 Abfragen, um festzustellen, ob ein Beitrag gelesen wurde oder nicht.

Zu Optimierungszwecken kann man natürlich die MarkReadForum- und MarkReadThread-Datensätze löschen, wenn jemand alle Forum als gelesen markiert bzw. die MarkReadThread-Datensätze partiell löschen, wenn jemand ein Einzelforum als gelesen markiert.

Jo, so ungefähr haben die es mir @ PHPBB Forum auch erklärt :)

naja, trotzdem ne heidenschwere arbeit sowas zu coden

Greetz @ All und allen nen schönes Wochenende