Ich habe Benutzerdiskussionsforen, die ich in php / mysql codiert habe. Ich möchte wissen, wie die großen Namenforen zeigen können, welche Themen neue Beiträge in ihnen haben, normalerweise durch Ändern eines Symbolbildes neben dem Thread ohne zu verwenden kaum Ressourcen?
Der einfachste Weg besteht darin, zu verfolgen, wann das letzte Mal jemand eingeloggt war. Wenn sie zurückkommen, ist alles, was seitdem aktualisiert wurde, offensichtlich "neu".
Dies hat jedoch einige Probleme, da das Abmelden alle Elemente als gelesen markiert.
Die einzige andere Möglichkeit wäre, eine Tabelle zu erstellen, die alle Threads und den letzten Post in diesem Thread enthält, den jeder Benutzer gesehen hat.
%Vor%Mit diesen Informationen, wenn es einen Beitrag in Thread # 5 gibt, der eine ID größer als 15 hat, dann weißt du, dass dort ungelesene Posts sind. Aktualisieren Sie diese Tabelle nur mit der Post-ID des letzten Beitrags auf dieser Seite . Das bedeutet, wenn drei Seiten mit neuen Posts vorhanden sind und der Benutzer nur den ersten Post anzeigt, weiß er immer noch, dass ungelesene Posts vorhanden sind.
Wie oben erwähnt, außer dass die Threads, die der Benutzer tatsächlich besucht hat, verfolgt werden. Alles, was der Benutzer nicht besucht hat, gilt als neu für diesen Besucher. Für eine feinere Kornkontrolle werden alle Threads ignoriert, die vor der Registrierung des Benutzers erstellt wurden, und möglicherweise werden Threads ignoriert, die nicht innerhalb eines bestimmten Zeitraums besucht wurden. Dies würde verhindern, dass jeder nicht besuchte Thread ein neuer Thread für sie wird.
Natürlich gibt es viele Möglichkeiten, eine Katze zu häuten und abhängig davon, was die Entwickler des Forums wollten, kann das oben Angezeigte geändert werden, um
zu passenDC
Sie könnten eine spezielle Tabelle in Ihrer Datenbank mit Spalten wie USER_ID und THREAD_ID und mit entsprechenden Einschränkungen für Ihre USER- und THREAD-Tabellen und einen Primärschlüssel mit USER- und THREAD-IDs erstellen.
Wenn jemand einen Thread öffnet, fügen Sie einfach das USER-THREAD-PAIR in diese spezielle Tabelle ein.
In Ihren Thread-Listen können Sie jetzt einfach die Tabelle an die jeweils passende Stelle anschliessen. Wenn Ihre neue Tabelle an einer bestimmten Stelle NULL enthält, ist dieser Thread ungelesen. Dies aktiviert Listen wie:
Wenn Sie dieser Tabelle eine Datumsspalte hinzufügen, können Sie noch interessantere Dinge tun.
Behalten Sie Ihre Schlüssel und Indizes im Auge, um zu starke negative Auswirkungen auf die Leistung zu vermeiden. Versuchen Sie aus der USER-THREAD-Tabelle nur zu lesen, indem Sie sie in Ihre bestehenden Abfragen einfügen. Das funktioniert viel schneller als die Ausführung einzelner Abfragen die ganze Zeit.
Sie könnten eine Tabelle haben, die eine Einfügung erhält, wenn ein Thread gelesen wird, wenn der Benutzer sie nicht bereits gelesen hat. Wenn dann jemand zu dem Thread hinzufügt, können Sie alle Einträge in der Tabelle für diesen Thread löschen, wodurch er für alle Benutzer ungelesen wird.
Die Tabellenstruktur wäre etwas wie
%Vor% Mit dem optionalen Extra has_read_id
für Ihren Primärschlüssel, wobei die anderen Felder einen zusammengesetzten Schlüssel bilden.