Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pisanie wydajnego i wygodnego forum
Armano
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 1.11.2011

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


Jestem w trakcje pisania modułu do cms'a którym ma być forum i napotkałem jeden czysto teoretyczny problem:

Śledzenie tego czy user odwiedził już dany topic. Z racji tego że całość m być jak najbardziej lekka doszedłem do pewnego rozwiązania lecz nie jestem pewien czy uznacie jest dobre, całość postaram się przedstawić jak najbardziej zrozumiale:

  1. Wszystkie dane o odwiedzonych podstronach będą przechowywane w dwóch miejscach cookies i db
  2. Tabela w bazie danych będzie się składać z 3 pól user_id topic_id time
  3. Po odwiedzeniu Posta wysyłane będą do bazy dane o tym (o ile user jest zalogowany) informacje że topic został przeczytany, dodatkowo by ograniczyć ruch związany z bazą danych sprawdzane będą tylko dane z ciastek i na podstawie tego będzie określane czy powinno wykonać aktualizację stanu.
  4. Obsługa ciastek (w tym zmiana ikonki stanu) będzie wykonywana z poziomu JS


Napotkałem kilka drobnych problemów co gdy user przeloguje sie na inne konto? na którym ma zaznaczone posty jako nie przeczytane? czy to rozwiązanie jest dobre czy nie? a moze dobre tylko dla niezalogowanych userów?

jak sprawdzić czy user ma nieprzeczytane posty w kategorii a nie chce listować wszystkich...

Czy może wydajniej będzie sprawdzać dane z DB?
ps. Jeśli nie masz zdania nie pisz tutaj nie lubię spamu, floodu itd..

Ten post edytował Armano 1.11.2011, 14:09:35
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Nie przechowuj informacji na temat daty ostatniej wizyty w ciastku, w ciastku przechowuj ID sesji a to kiedy ostatni raz user był zalogowany przechowuj w sesji, wtedy przelogowanie na inne konto nie będzie stanowić jakiegoś problemu. W sumie możesz te ciastko niszczyć przy wylogowaniu, lub niszczyć nawet przed samym logowaniem.

Generalnie z tego co się orientuje są 2 metody na wyróżnienie wątków/postów których user nie przeczytał:

- tak jak ty robisz, czyli porównywanie powiedzmy ostatniej daty aktualizacji wątku, z datą ostatniej wizyty usera
- tabela w której są przechowywane informacje na o nie przeczytanych wątkach/postach dla każdego usera z osobna

obie metody nie są idealne, jedna średnio dobrze sprawdza się podczas aktualizacji czasu ostatniej wizyty usera, druga pochłania spore ilości miejsca w bazie. Dlatego trzeba wybierać co będzie bardziej nam odpowiadać.
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 Aktualny czas: 21.08.2025 - 10:40