[Brainstorming - Diskussion]Aktualität von Einträgen anzeigen

J-C

Lounge-Member
Hm, hab jetzt keine Bessere Überschrift gefunden - und eventuell kann dieser Thread auch in Serverside-Forum - aber ich wollte mal einen "offenen" Erfahrungsaustausch.

Folgendes:
Wie würdet ihr es lösen, oder wie meint ihr ist es gelöst, daß man (hier) im Forum sieht, welche Beiträge man schon gelesen hat und welche nicht?

ich meine - ich kann doch unmöglich alle Posting-IDs in der Datenbank oder in einem Cookie speichern - oder???

ich bastle im Moment auch an einer Art Forum - in sehr kleinem Rahmen und mit wenig Funktionen - aber DIESE Funktion sollte es schon haben =)
 
Wie geht es denn z.B. mit der Funktion "neue Beiträge" ? Ich denke da werden alle nach meiner letzten Session angezeigt. hm, Bringt aber im Gegenteil gar nix, denn es heißt ja noch lange nicht das ich alle Beiträge die nicht neu sind gelesen habe.

Um für jeden User zu merken, welche Beiträge er aufgerufen hat muß man ja irgendein Merkmal setzen, was auch nach dem logout erhalten bleibt.

Die Frage ist, wie aufwändig und Platzintensiv ist es, für jeden User die Beitrags-ID in der DB zu speichern?
Es muß jedes öffnen eines Beitrags einmalig festgehalten werden. Wiederholtes Öffnen muß dann ggf. nicht mehr mitgezählt werden, es sei denn, das die automatische Löschung der Information aus der DB von dem Zeitpunkt der letzten Betrachtung abhängt.
Wie lange will man die Daten bevorraten?
Die Daten müssten wohl nach einem zu bestimmenden Zeitraum automatisch wieder rausfliegen, weil sonst über Jahre hinweg eine ziemliche Datenmenge je User entsteht.

Über Cookies find ich ziemlich ungenau, weil bei mir werden die z.B. bei jedem Schließen des Browsers gelöscht.

Für mein Verständnis kann das eigentlich nur über eine organisierte Verwaltung in Zusammenhang mit der UserDB gehen.
 
@ stormwind - EIN Feld mit vielen Zahlen? du willst alle gelesenen Beiträge in EINEm Feld speichern? naja, okay Text-Felde rgehen bis 4Gb Daten ... da braucht man schon eine Weile, eh das voll is =)
 
das hatt ich im Hinterkopf, ja....
ein TEXT-feld, wo alle zahlen drinstehen...
kommt ja auch auf die tabellenstruktur an. wenn du zB eine typische Parameter -> Wert-Tabelle für jeden User hast,
mit 2 Feldern, könntest du auch Param.=NewPost und als wert halt den Post...
sind danna aber auch viele, und is viel unübersichtlicher... :D
 
auf "übersichtlichkeit" legt man bei sowas ja keinen wert ... es geht mir mehr um die "handle"barkeit
 
Also jede Bewegung jedes Users zu erfassen erzeugt eine riesen Datenmenge, die sicherlich nicht sonderlich performancestiegernd wirkt.
Von meinen Beobachtungen dieses Forums her würde ich mal schätzen, dass die Software das folgendermaßen macht:
- Pro User wird der Zeitpunkt der letzten Aktivität festgehalten (siehe Profil Details), d.h. der Zeitpunkt der letzten Anfrage der vorangegangenen Sitzung (!= aktuelle Sitzung)
- Kommt der Benutzer wieder und sucht nach geänderten Threads, so erhält er eine Liste aller seit diesem Zeitpunkt veränderter / erzeugter Threads.
- Liest der Benutzer nun einen Thread, so wird die BeitragsID des angezeigten Beitrags gemerkt (dadurch kann der Thread noch ungelesen bleiben, wenn der Benutzer nicht bis zur letzten Seite gelesen hat).
- Die Speicherung erfolgt in der Sitzung.
- Wenn die Sitzung abläuft, sind die Daten automatisch vernichtet.
- Innerhalb der Sitzung bleiben gelesene Threads gelesen neue Beiträge wandeln bereits gelesene Threads in ungelesene.

Nachteil dieser Variante ist, dass man einen ungelesenen Thread einer vorherigen Sitzung nicht wieder als ungelesen zu sehen bekommt, er wurde implizit als gelesen deklariert.

Diese Lösung ist mit Ausnahme des genannten Nachteils sehr elegent, entstehen doch nur dann Daten, wenn die Benutzer sich einloggen. Allerdings unterliegt der Mechanismus der Annahme, dass die Benutzer in jeder Sitzung alle Threads lesen, die sie interessieren, so dass sie in der nächsten Sitzung nur noch neue Threads sehen.

Ob die Lösung für Dich in Frage kommt weiß ich nicht.
 
hm - klingt aber schonmal ganz gut ... sowas ähnliches hatte ich auch schon gedacht ...

und wie gesagt, ich will die DB relativ "schmal" halten ... ich werd mal drüber schlafen. =)
 
ich weiß ja nicht wieviel user und threads du hast oder haben wirst aber eine ganz simple lösung (progammiertechnisch gesehen) wäre wenn alle threads eine log-datei mit ihren lesern hätten und die halt abgefragt wird ob user x "drin" ist :).
kann ja auch für weiter statistiken gut sein.
aber wenn du dann bei 10.000 threads bist und der user möchte eine option nutzen wie "alle threads als gelesen markieren" könnte das den server belasten.
oder man schreibt ein wieteres kreatives script indem man wieder mit zeit arbeitet und es in der größe von albus variante ausartet. wobei man diese auch gleich benutzen könnte...

mfg
 
'ne log-file?

naja - aber dann müßtest du die jedes mal wieder löschen bzw neu schreiben, wenn jemand was postet oder?
 
pro thread wird gleich ein leeres logfile erstellt.
wenn zb j-c in den thread schaut steht im logfile j-c
und wenn dann der albu reinschaut steht da, j-c,albu
usw, nix wird gelöscht.
es wird immer eingetragen wer den thread öffnet.
und beim anzeigen des links wird im css file was man mit php generiert abgefragt ob zb thread-100.log
den user besitzt oder nicht und demenstsprechend dann der style erstellt.
serverlastig aber einfach zu programmieren.
(meiner meinung...)
 
Hier ein Text über die Möglichkeiten mit vBulletin.

Mit drei Einstellungsvarianten kann festgelegt werden, wie Themen und Foren als gelesen markiert werden.

1.Basierend auf dem Cookie und Inaktivität - Sobald ein Benutzer eine bestimmte Zeit (Cookie-Timeout) im Forum nicht mehr aktiv war, werden alle Themen und Foren als gelesen markiert. Einzelne Themen werden während einer Sitzung über Cookies als gelesen markiert.

Alle vBulletin-Versionen vor 3.5 verwendeten diese Einstellung.


2.Datenbank (keine automatische Markierung der Foren) - Gelesene Themen/Foren werden in der Datenbank gespeichert. Dadurch ist es möglich, dass gelesene und ungelesene Themen/Foren über einen längeren Zeitraum genau gespeichert werden. Hat man jedoch alle Themen eines Forums gelesen und klickt dann auf die Forum-Startseite, wird dieses Forum immer noch mit dem Symbol für neue Beiträge angezeigt. Erst wenn man das Forum erneut aufruft, wechselt das Symbol zu "Keine neuen Beiträge".

Diese Art erfordert mehr Speicherplatz und belastet den Server mehr, als die Markierung über Cookies und Inaktivität.


3. Datenbank (automatische Markierung der Foren) - diese Einstellung funktioniert genau wie die zweite Variante, jedoch werden dabei die Foren bereits als gelesen markiert, sobald das letzte Thema mit neuen Beiträgen gelesen wurde.

Diese Art ist für den Endbenutzer am praktischsten, jedoch wird auch der Server am stärksten belastet.


[edit] evtl hilft das letzte Posting dieses Threads als Denkunterstützung
http://tinyurl.com/f48mw
 
Zuletzt bearbeitet:
huhu =)

also ich find die idee von PRINZ super...
wenn man dann z.b. noch die timestamps noch dazuspeichert hat man doch noch ne supertolle "werhatsgelesen-funktion"^^

ich selber benutz das auch für mein forum und muss sagen dass es ganz gut funktioniert....

http://www.php-support.net/nopaste.php?id=942 (z60)
http://www.php-support.net/nopaste.php?id=943 (z30)
http://www.php-support.net/nopaste.php?id=944

würd mal so schatzen dass das die einfachste und kleinste methode is wenn man noch

- bei der namensspeicherung schaut ob der name schon eingetragen ist
- nur die id jedes users speichert

so hat man auch den vorteil dass z.b. durch cookielöschung nix verlorn geht...


mfg
muche
 
man könnte auch zusätzlich über das erstellungsdatum der threads ne funktion einbinden.
zb die die älter sind als 10 tage als gelesen markieren lassen, um nicht immer die restlichen uninteressanten threads als ungelesen stehen lassen.
 
bine schrieb:
1.Basierend auf dem Cookie und Inaktivität - Sobald ein Benutzer eine bestimmte Zeit (Cookie-Timeout) im Forum nicht mehr aktiv war, werden alle Themen und Foren als gelesen markiert. Einzelne Themen werden während einer Sitzung über Cookies als gelesen markiert.
Sag ich doch... außer, dass ich Sitzung durch Cookie ersetzen muss ;)
Aber hab auch nicht danach gesucht, war nur meine Beobachtung.
 
Hmm, es hängt natürlich von der Größe dess Forums ab, aber eine Log- oder andere DATEI halte ich für sehr serverlastig und unpraktisch. Sollte eine Speicherung der Daten in einer Datenbank geschehen, würde sich dafür doch eher eine neue Tabelle als ein riesiges Textfeld anbieten ;) (siehe hierzu auch die erste Normalform)
Allerdings finde ich die Idee, die Daten in einem Keks zu speichern sehr gut und würde ich diese Technik wohl auch nutzen, wenn ich ein solches Projekt angehen würde)

MfG

Stephan
 
@ Prinz ... aber sobald jemand ein neues posting verfaßt, müßte man ja die file löschen, weil sonst würde ja der thread auf "gelesen" bleiben - oder seh ich des falsch?
 
das ist wohl wahr @ j-c.
ihr habt recht am ende ist's doch recht unpraktisch wenn man so überlegt...
zumindest wird der aufwand genausogroß als wenn du ne datenbank machen würdest.
wie stephan meinte.
...ich persönlich mag keine coockies...
 
Zurück
Oben