Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: system statystyk
Forum PHP.pl > Forum > PHP
st1
Witam - próbuję zrobić system statystyk - cos w stylu gemiusa albno mystata. Tzn. ma być to taki system, który można podłączyć do dowolnego serwisu www.

Mam jednak pewną wątpliwość. Na początku myślałem żeby oprzeć takie statystyki (w uproszczeniu) na tabeli logów zapisywanych w bazie danych. Każdy wiersz w tabeli reprezentowałby pojedynczą odsłonę, które planowałem grupować w wizyty. Jest jednak pewien problem. W przypadku monitorowania serwisu na którym powiedzmy jest 20 000 wizyt miesięcznie (czyli załóżmy że średnio 100 000 odsłon) w bazie danych ląduje 100 000 rekordów tylko dla jednego serwisu miesięcznie. A co jeśli takich serwisów mój system monitoruje 50. To daje już nam 5 000 000 rekordów miesięcznie. Obawiam sie o wydajność.

Czy ktoś wie jak ten problem powinien być porządnie rozwiązany....? myślałem o tym żeby szczegółowe dane dotyczące odsłon przechowywać tylko dla powiedzmy 20 czy 40 ostatnich odsłon dla każdego z monitorowanych serwisów WWW. Starsze dane możnaby agregować i gdzieś sobie przechowywać (na przykład w pliku xml). Agregacja dokonywałaby się powiedzmy co 30 minut (jakiś skrypt agregujący by był wykonywany na serwerze, przy użyciu np.: crona)

Co o tym myślicie – może ktoś wie jak to powinno być „porządnie” zrobione ... questionmark.gif
popbart
Jeżeli potrzebujesz statystyk o dokładności jednego dnia to jeden wiersz będzie całym dniem wizyt. Dodajesz pole "ilosc" które uaktualniasz poleceniem update.
Linandar
Tak, ale w tedy nie możesz monitorować adresów i przeglądarek itd.... Też nad tematem statystyk siedzę i te liczby naprawdę mnie przerażają...
Ace
fakt, stworzylem jakis czas temu system statystyk - jedno wejscie = 1 rekord, ale baza strazsnie sie rozrastala... 1 odnola 1 wpis. Pozniej ograniczylem to do 1 wizyty = 1 wpis, ale to nadal bylo troche za duzo. Musisz sie zastanowic co chcesz wyswietlac uzytkownikowi... Jakie dane, jesli nie bedizesz wyswietlal np: wszystkich osatnich wejsc na strone , to ich nie monitoruj, jesli bedizesz pokazywal np: 50 ostatnich, to tylko 50 ostatnich zapisuj... Nie ma sensu trzymanie szczegolowych inforamcji jesli nie bedziesz z nich korzystal.
boloo77
Ja trochę podobny problem rozwiązałem następująco:
Mam system wymiany reklamy tekstowej Link-Ex.NET a w nim statystyki z rozbiciem na dni, godziny, loguję też kilka innych rzeczy.

I tak w ciągu dnia loguję każde wyświetlenie reklamy. Wraz z danymi o godzinie, ip, z jakiej strony, jaka reklama sie wyświetla itp. po północy z crona odpalam skrypt, który wyciąga mi z wszystkich zapisanych rekordów (informacji o pojedynczych wyswietleniach) wszystkie dane które chcę logować.

Upycham je w osobne tabele (gdzie dane juz sa zapisywane w postaci np: id_reklamy, data, godzina (np. od 13 do 14) , ilosc wyświetlen, ilosc unikatowych ip itd.) Ty możesz tu logować przeglądarki, ilość itd. z taką szczegółowocią jaka Ci jest potrzebna.

Po skonczonym obliczaniu statystyk z calego dnia czyszcze tabele z pojedynczymim wyswietleniami. (Mogę zostawić sobie niektóre dane np. stron które podejrzanie zawyzają statystyki winksmiley.jpg zeby moc się im dokładniej przyjżeć w dłuższym okresie czasu )

I powiem tyle, że tabela z wszystkimi wyświetleniami (dla 700 tyś rekordów) ma 150 MB. Natomiast po zebraniu w kupkę wszystkie te dane w 5 tabelach ze statystykami zajmują trochę ponad 1,5 MB.


Mam nadzieję że w miare jasno opisałem idee mojego rozwiązania (siedzę już od 15h przed kompem i pomalu juz odpływam winksmiley.jpg )
st1
dzieki serdeczne - walasnie o takim rozmiwazaniu tez myslalem
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.