Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] [MySQL] Statystyki wyświetleń filmów (dzień, tydzień, miesiąc)
Forum PHP.pl > Forum > PHP
kondor
Witajcie,

Mam prośbę - chciałbym dodać do serwisu informacje o tym jakie filmy są najchętniej oglądane ostatnio, jakie w tym tygodniu, jakie w miesiącu itd.
Nie wiem jak to zrobić, jak sensownie umieścić informacje w bazie.
Póki co najbliższy jestem takiego rozwiązania:
każdy film w bazie ma dodatkowe pola (pon, wto, śr, cz, pt, so, nd, tydzien, miesiac). Jeżeli mamy poniedzialek to "podnoszą się" statystyki poniedziałku, tygodnia i miesiąca itd. Co jednak z zerowaniem jeżeli znów jest poniedziałek tak aby nie dublować? Czy przez CRONE'a?
A może jest na to jakiś lepszy sposób, możę ktoś już robił coś takiego i ma gotowy, sprawny pomysł?

pozdrawiam i dziękuje za pomoc.
Konrad
Mephistofeles
Ja bym zapisywał datę i wyświetlenia w tym dniu, a potem możesz usuwać wpisy najstarsze, albo edytować je zmieniając datę i zerując wyświetlenia. Raz dziennie odpaliłbyś skrypt kasujący, np. cronem.
thek
Ja bym myślał o tabeli z polami: data, id_filmu, wyswietlen, przy czym założyłbym indeks na parę data+id_filmu i osobny chyba na data, choć zastanawiałbym się trochę nad id_filmu także, ale nie jest on konieczny.
Jeśli ktoś wchodzi na stronę to dodajesz do bazy rekord z danymi: data, id_filmu, 1, a jeśli istnieje już rekord o identycznej parze data + id_filmu to zrobić update tego rekordu i dodać do wyświetleń jeden smile.gif
To chyba jedno z sensowniejszych rozwiązań na statystyki, bo możesz sobie kombinować jak chcesz potem z sumowaniem zestawieniami po liczbie wyświetleń dla danej daty, dla filmu, dla jakiegoś okresu. Z kolei samo zapytanie to będzie wariacja na temat:
INSERT INTO... ON DUPLICATE KEY UPDATE ...
kondor
Tylko czy to sie za bardzo nie rozrosnie jezeli dla kazdego dnia i kazdego filmu bedzie osobny wpis w tabeli? Boje sie, ze moze to "zjesc" baze - poki co jest okolo 300 filmow i dziennie 2000-3000 odslon ale to wszystko szybko rosnie.
Czy nie ma jakiegos mniej "zasobożernego" rozwiązania? Nie wiecie jak to np. robi Youtube?
A moze - dla przykladu - baza ktora ma 200.000 wpisow wcale nie jest duza i nie spowolni to serwisu?

thek
Nie do końca zauważyłeś chyba, że dla takiego rozwiązania tylko przeglądane filmy dostają rekordy winksmiley.jpg Filmy olewane nigdy nie będą miały rekordów w tej tabeli lub sporadycznie tylko. Co jakiś czas możesz oczywiście zrób czyszczenie cronem starszych niż miesiąc. bazie to nie zawadzi, bo wytrzyma rekordy liczone w większych ilościach.
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.