CGollhardt
Mitglied
Guten Abend,
ich wollte mal Fragen wie man in einem Forum am besten die nicht gelesenen Einträge (letzten 30 Tage) einem User anzeigt.
Ausgangspostion:
- Das Forum ist selbst geschrieben
- Es funktioniert und ist bereits im Einsatz
- Ich habe keine Möglichkeit aus den derzeitigen Datensätzen eine solche Funktion zu realisieren
Aktuelle Datenbankstruktur:
- Es gibt eine Spalte Threads, die eine ID und sonstige Daten haben
- An der Spalte Threads häng Posts. Diese haben ebenfalls eine ID und haben eine ParentID (Threads)
So würde ich es umsetzen:
- Jedes mal wenn ein User einen Post macht werden alle ID's der derzeitig angemeldeten User geholt
- Per PHP wird in eine Spalte UnreadedPosts jede der geholten ID's und die Post/Thread ID eingetragen
- Wenn der User auf das Forum klickt, wird für jeden Thread geprüft, ob die Thread ID in der Spalte UnreadedPost mit seiner UserID verknüpft ist. Wenn ja, wird dieser Thread als Ungelesen makiert werden
- Ein Cronjob würde anhand eines Timestamps in der UnreadedPosts alle Beiträge die älter als 30 Tage sind löschen
Die Frage:
Ich persönlich halte es für einen extrem großen Overhead, man stelle sich vor es gibt 10.000 registrierte User, dann würde bei einem Post die IDs von 10.000 Usern ausgelesen werden, und 10.000 neue Inserts erstellt werden. Kann ich dies irgendwie besser machen?
Vielen Dank für eure Hilfe!
Edit:
Ich glaube zwar nicht das es hilft, aber hier der Link zum Forum http://www.ggs-clan.de/design.php?seite=forum
Wenn Programmcode erforderlich ist, würde ich diesen Posten
ich wollte mal Fragen wie man in einem Forum am besten die nicht gelesenen Einträge (letzten 30 Tage) einem User anzeigt.
Ausgangspostion:
- Das Forum ist selbst geschrieben
- Es funktioniert und ist bereits im Einsatz
- Ich habe keine Möglichkeit aus den derzeitigen Datensätzen eine solche Funktion zu realisieren
Aktuelle Datenbankstruktur:
- Es gibt eine Spalte Threads, die eine ID und sonstige Daten haben
- An der Spalte Threads häng Posts. Diese haben ebenfalls eine ID und haben eine ParentID (Threads)
So würde ich es umsetzen:
- Jedes mal wenn ein User einen Post macht werden alle ID's der derzeitig angemeldeten User geholt
- Per PHP wird in eine Spalte UnreadedPosts jede der geholten ID's und die Post/Thread ID eingetragen
- Wenn der User auf das Forum klickt, wird für jeden Thread geprüft, ob die Thread ID in der Spalte UnreadedPost mit seiner UserID verknüpft ist. Wenn ja, wird dieser Thread als Ungelesen makiert werden
- Ein Cronjob würde anhand eines Timestamps in der UnreadedPosts alle Beiträge die älter als 30 Tage sind löschen
Die Frage:
Ich persönlich halte es für einen extrem großen Overhead, man stelle sich vor es gibt 10.000 registrierte User, dann würde bei einem Post die IDs von 10.000 Usern ausgelesen werden, und 10.000 neue Inserts erstellt werden. Kann ich dies irgendwie besser machen?
Vielen Dank für eure Hilfe!
Edit:
Ich glaube zwar nicht das es hilft, aber hier der Link zum Forum http://www.ggs-clan.de/design.php?seite=forum
Wenn Programmcode erforderlich ist, würde ich diesen Posten
Zuletzt bearbeitet: