![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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ę, ![]() 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
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.06.2025 - 08:10 |