Wysłany: 07 Maj 05 14:52 • Temat postu: Pseudoankieta - przyszłość forum
Muszę wam zadać dość ważne pytanie.
Od paru dni pracuję nad przyspieszeniem forum. Dzisiaj ściągnąłem sobie phpBB2 i nazwijmy to "rozebrałem je". Dzię,i temu dowiedziałem się, w jaki sposób cwaniaki zrobili nieczytane posty (tylko nie wiem czy to działa u ludzi z wyłączonymi cookies).
Otóż przedstawię wam teraz nasz system:
Tematy są zapisywane w tabeli forum_post, a posty w tabeli forum_reply. Każdy post ma przydzielone ID autora i datę. (narazie wszystko jasne). Przy dodaniu przez kogoś postu, tematu, wyszukiwani są wszyscy użytkownicy, a potem w tabelę read_history wrzucane jest id użytkownika, oraz namiary na post: Dział ( tak jak teraz np. Info), Kategoria (np. Informacje), oraz temat (np. Pseudoankieta). Razem z id to są 4 rekordy. Zakładając, ze jest (a jest) zarejestrowane 500 userów, to na dzień dzisiejszy mamy tabeli tej ponad 600 000 rekordów - 9.4 MB danych. Tymczasem wszystkie posty zajmują (z tematami) 1.3 Mb. To znaczy, że nieczytane posty zajmują w bazie aż 7 razy więcej niż reszta forum. A nawet powiem więcej, ona zajmuje 92% bazy danych (9.4mb / 11mb w tej chwili). Wniosek - nieczytane tematy są wręcz pasozytem dla całego portalu.
Teraz przedstawię jak zrobiło to PhpBB2.
Na początku wczytują z bazy twoją ostatnią wizytę (za każdym zalogowaniem, jest ona uaktualniana). Następnie, wczytywane są wszystkie TEMATY w których data ostatniego postu jest nowsza niż data twojej ostatniej wizyty (nasze forum też ma takie coś, aby wyswietlać na pierwszej stronie datę ostatniego postu).
Dajmy na to znajdzie ich 10. Przypisuje te posty do kategori w podwójnenj tablicy (czyli do kategori1 dołącza wszystkie posty z tej kategori, do kat2 z kat2 itd.).
Następnie generuje kategorie, i sprawdza, czy liczba rekordów dla danej kategori jest >= 1. Jeżeli coś znajdzie, to pokazuje się wiadoma ikonka .
To samo przy tematach. Jednak najciekawsze jest oznaczanie tych przeczytanych postów . Otóż po włączeniu tematu (nie ważne na której jego stronie, ważne żeby był tam choć 1 z nieczytanych postów, co jest wadą, bo na naszej stronie jak nie pzeczytasz strony 5 a przeczytasz 4 to nadal cię o tym informuje), zapisywane są do ciasteczka ID postów (ale jeszcze zgłębiam ten tajnik). Potem przy tworzeniu kategori, jeżeli natknie się na id takiego pliku w ciasteczku, to ju.z nie oznacza go jako przeczytane. Zaleta za to jest to, że nawet po 20 minutach od niewylogowania się, można sprawdzić posty od ostatniej wizyty (nawet te juz przeczytane).
Generowanie tego trwa naprawdę szybko i ogranicza się do jakichś 0.1 sekundy. Dużo szybciej niż teraz.
Jak widziecie, system PHPbb jest szybszy, tylko jest jeden problem - obecny posób zapisywania postów nie nadaje się do przerobienia, a samo przerobinieie zajmie mi jeszcze z dobre 2-3 tygodnie.
Więc chcialem się dowiedzieć, czy ma wogule sesn wprowadzanie taikiego usprawnienia, wyłaczając w którymś momencie forum na 2-3 dni, czy też szukac alternatywnych rozwiązań, które niewątpliwie będą zjadały zasoby systemowe i tylko spowalniały pracę forum ?
Wybór należy do was, bo ja i tak będę siedział nad tym kilkadziesiąt godzin, z tym że gdybym jednak miał wprowadzić te poprawki mógłbym usprawnić działanie całej strony.
Naszczęście powstająca strona o PSX będzie miała więcej szczęścia, bo nowe forum zostanie w nim zaaplikowane .
Gnysek możesz robic wszystko, co poprawiłoby forum i zeby nam było wygodniej xD Może i to ma wady (a co nie ma wad?), ale jak dalej będziemy tak zużywać miejsce na serwerze to wkrótce go zabraknie ( tylko przez posty nieprzecztynane :bad: ) i tez nie będzie fajnie... Więc jak za pomocą drugiej możliwości będziemy mieli mniej zajętego miejsca na forum, to ja wybieram rozwiązanie drugie :]
Gnysek jak chcesz to przerób forum. Wg mnie lepiej jest usprawnić forum, by zżerało mniej miejsca w bazie niż teraz gdzie te nieprzeczytane posty zajmują nam 90 % hh: hh: .
_______________________________________________
Jeszcze jedno zauważyłem błąd:
Cytat:
Na stronie jest 10 osób. [Zalogowanych - 5, Gości - 5]
Zarejestrowani: gość, walhorn, Blondi, beatrce, Komar, gość, gość, gość, farmer Beder, gość,
Pisze, że gość jest zarejestrowany. W dodatku jest ich 5 !! Chyba coś jest nie tak ??
pewnie ktoś się zajerestrował jako gość a z tym "klonowaniem się" to proste wystarczy w ie włączyć pare okien naraz i sięzalogować i nagle jest pare gościów naraz
gnysek rób wg. swojego uznania,wiem że zrobisz jak najlepiej :>