Szukaj:
Strona Forum   Wybierz
Wybierz
Uwaga! Przeglądasz stronę jako gość!      Zaloguj się      Załóż nowe konto

×

Pseudoankieta - przyszłość forum
gnysek Użytkownik jest offline
Postów: 2561
Ostrzeżenia: 0%  
gnysekhttp://hmt.pl
2330 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 .
Reklamy
Domka Użytkownik jest offline
Postów: 2061
Ostrzeżenia: 0%  
Domka
2331 Wysłany: 07 Maj 05 15:49 • Temat postu: Re:
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 :]

____________________

[obrazek]
[obrazek]
Komar Użytkownik jest offline
Postów: 770
Ostrzeżenia: 0%  
Komar
2332 Wysłany: 07 Maj 05 22:11 • Temat postu: Re:
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 ??

Edytowany przez: Komar 2005-05-07 22:13:55

____________________

[obrazek]
eloo_gosciu Użytkownik jest offline
Postów: 665
Ostrzeżenia: 0%  
eloo_gosciu
2333 Wysłany: 07 Maj 05 23:00 • Temat postu: Re:
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 :>

____________________

[obrazek]
Tidus Użytkownik jest offline
Postów: 671
Ostrzeżenia: 0%  
Tidus
2334 Wysłany: 07 Maj 05 23:03 • Temat postu: Re:
Rób co trzeba ! Przecież wytrzymamy te 2-3 dni .
gnysek Użytkownik jest offline
Postów: 2561
Ostrzeżenia: 0%  
gnysekhttp://hmt.pl
2335 Wysłany: 08 Maj 05 10:02 • Temat postu: Re:
2-3 dni, jak napisanie tego skryptu i przeróbka z tego forum zajmie mi z 2 tygodnie...

Prawde mówiąc, to najlepiej było by napisać cały system od nowa

Narazie spróbuję łatwiejszą wersję z kaswoaniem starszych niz tydzień nieczytanych postów.
wujek_kolacz Użytkownik jest offline
Postów: 1408
Ostrzeżenia: 0%  
wujek_kolacz
2336 Wysłany: 08 Maj 05 22:05 • Temat postu: Re:
ja bym proponował tą łatwiejsza wersję i wprowadzenie odznacz jako przeczytane w pozczególnych działach a nie tylko do całości

____________________

[obrazek]
© 2003 - 2024 HMT. Design & Code by gnysek.pl. Wszelkie prawa zastrzeżone.