Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Optymalna Reprezentacja nieprzeczytanych postów
mierzeju
post 24.08.2009, 22:52:20
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


Ostatnio planuje pisanie własnego skryptu forum. I tu nie mogę zdecydować w jaki sposób reprezentować dane żeby było optymalnie ale i bardzo funkcjonalnie.

Pierwsze rozwiązanie.
Tak jak jest w phpbb by przemo: tabela z postID | topicID | userID | date. Niby wszystko fajnie łatwo można uzyskać informacje ile ma się wszystkich nieprzeczytanych postów, gdzie po ile etc.... Tylko jak mamy forum 10 000 userów i do tego np limit 500 postów nieprzeczytanych dla każdego to mamy 5 milionów wpisów w tabeli.... A każdy nowy post to insert do tabeli o wielkości ilości użytkowników.

Drugie rozwiązanie
Chyba tak jest w phpBB3 nie ma tej tabeli wcale. I nowe posty sprawdza się przez datę ostatniej wizyty w porównaniu z datami postów. I tu jest problem bo jak się wylogujemy i zalogujemy ponownie to już nie mamy dostępu do tych których nie przeczytaliśmy. Dodatkowo tam jest jakiś system który zapisuje datę ostatniego wyświetlenia danego tematu. I jest problem jak rozwiązać np przeczytanie kilku pierwszych stron tematu a reszty nie.... I liczenie nieprzeczytanych postów w poszczególnych tematach(kilku) w tym sposobie byłoby chyba poprzez wywoływanie kilku zapytań...

Chciałbym mieć system który to będzie dobrze liczył m.in. link "nieprzeczytanych postów [ilosc]" i spisy tematami z ilością nieprzeczytanych postów w nich, do tego pamiętanie tego niezależnie od daty ostatniego logowania. Coś o zapisywaniu w cookie też się nasłuchałem ale chciałbym żeby rozwiązanie działało nie tylko na jednym kompie.

Jeśli zastanawiał się ktoś na rozwiązaniami tego problemu, albo orientuje się jak to jest zorganizowane w innych skryptach for, bardzo prosiłbym o pomoc.

Ten post edytował mierzeju 24.08.2009, 22:54:56
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
thek
post 24.08.2009, 23:50:09
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Ja osobiście uważam, że najlepsze jest rozwiązanie zaproponowane przez Ciebie jako drugie. Użytkownicy bowiem przeglądają te tematy, które ich interesują, a resztę olewają. Dlatego jakiekolwiek przechowywanie informacji o wszystkich nowych postach mija się z celem. Dodatkowo nieaktywni użytkownicy lub logujący się raz na jakiś czas cały czas niemal mają 500 postów. A to zazwyczaj ponad połowa zarejestrowanych. Dodatkowo na ich rzecz jest ciągle wykonywana akcja zwalniania z tabeli postów powyżej limitu, więc mimo iż nie odwiedzają strony to ją obciążają. Dlatego najlepsze moim zdaniem rozwiązania to:
a) zaznaczyć DUŻYMI LITERAMI przy wchodzeniu na forum i przy rejestracji, że postów nowych NIE oznaczasz i trzeba do tematu zrobić subskrypcję,
cool.gif przy wchodzeniu na forum porównywać daty postów z datą ostatniego logowania i zwracać te, które są większe, ale z datą nie dalszą niż 2-4 tygodnie.
Jak zaznaczyłem, preferencje userów są wybiórcze i większość linka "Oznacz wszystkie fora jako przeczytane" chyba nie używa bo posty im ciągle w granicach 100-200 wiszą, nawet po zalogowaniu i przejrzeniu tematów. Dlatego lepiej niech dzieje się to wszystko automatycznie.
Myślę, że b jest lepszy. Tworzona by była tabela, w której przechowywano by tematy z numerem ostatniego postu. Jeśli ktoś by dopisał nową wiadomość w wątku jakimś, to automatycznie sprawdzana by była ta tabela i zmieniała by się wartość ostatniego posta dla tego tematu. Wątek byłby dodawany osobom obecnie zalogowanym. Kasowany byłby z tej tabeli jeśli user albo odwiedził temat, albo był na ostatniej stronie tematu. No i przy wylogowywaniu wszystkie wpisy w niej tyczące tego usera też by szły na śmietnik.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.06.2025 - 08:10