Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak najlepiej zliczac unikalne odwiedzyni
Forum PHP.pl > Forum > PHP
Grangu
No wiec jak w temacie chodzi o to ze mam strone na ktorej sa filmy i kazdy z filmow (podstrona) ma oddzielny licznik wyswietlen niestety uaktualnia sie przy kazdym odswierzeniu. Chcialbym aby zliczal tylko raz dzinnie. Nawet wpadlem na pomysl zeby zrobic tabele w sql ip|strona| data i wiadomo jak data < teraz+24h to zalicz i odswierz date. Tylko problem widze taki ze w koncu nie czyszczona baza danych mogla by zawierac dosc duzo ip z data zprzed roku. Wiem ze mozna zrobic czyszczenie w cronie co 24h ale niestety za crona musial bym doplacac do hostingu a wolal bym tego nie robic jezeli jest jakies inne rozwiazanie. Z góry dzieki za odpowiedz.
legorek
Możesz ustawić użytkownikowi ciasteczko (na 24h) a odwiedziny zliczać tylko wtedy gdy ciasteczko nie istnieje. Minusem jest to, że jak masz dużo tych podstron to może zabraknąć miejsca w ciasteczku.

Albo możesz kasować stare wpisy w tabeli w momencie jak ktoś wchodzi na stronę, wcale nie potrzebujesz crona. Minus: jak będzie ich bardzo-bardzo dużo do skasowania strona się długo wczytywać.
Grangu
No wlasnie jest ich srasznie duzo i kasowanie przy kazdej wizycie nie wchodzi w gre. Probowalem z ciasteczkami ale podstrony sa includowane i serwer twierdzi ze wyslal juz nagluwek przy pierwszym include w index.php.
Grangu
A to nie bedzie odrobine przegiecie jak komus wysle powiedzmy 100 ciastek??
Puzi
Ja mam to zrobione tak...
Mam tabelę w bazie danych a w niej kolumny data, ilosc i IP. Tylko że każdy jeden rekord to jeden dzień. I mam taki skrypcik który najpierw sprawdza czy aktualna data isntnieje w bazie. Jeśli nie istnieje to tworzy nowy rekord z aktualna datą. Jak już jest rekord z aktualną datą to wyszukuje mi z kolumny IP czy istnieje w niej taki adres IP. Jeśli nie to dopisuje mi go do pozostałej listy IP w tym dniu a do kolumny ilość dodaje mi 1.

Ja mam taki licznik i jest OK
Kocurro
W ciasteczku przechowujesz unikalny identyfikator, potem w bazie zliczasz wejścia z tego numeru ip i danego identyfikatora. W oddzielnej tabeli masz informacje kiedy ostatni raz zliczono dane wejście.

Proste ? Jasne, że tak - dziękuję za kliknięcie pomógł winksmiley.jpg

pozdr.
Łukasz
Grangu
Tylko jak juz wczesniej wspomnialem problem nie polega na zliczaniu unikalnych dziennych odwiedzin, to nie jest problem. Problem polega na ilosci danych przy zliczaniu unikalnych dzinnych odwiedzin dla kazdej podstrony oddzielnie 1000 odwiedzajacych razy 100 stron to 100000 wpisow w bazie. albo 100 cookie dla kazdego sad.gif. Czy moze mam tworzyc oddzielna tabelke dla kazdej podstrony?? Czy moze te 100000 czy nawet milion rekordow w jednej tabeli to nie tak duzo i przeszukiwanie nie bedzie wcale dlugo trwalo?
Kicok
Ale zauważ, że ta tabela nie będzie wielka. Wystarczą 2 pola: IP (4 bajty) i ID strony (3-4 bajty). Daje to 7-8 bajtów na wiersz. Do tego indeksy na te pola i wydajność będzie bardzo dobra, nawet przy 1 000 000 rekordów.

Jedyny problem to czyszczenie tej tablicy co 24h. Masz 2 wyjścia:
1. CRON
2. Zapisujesz sobie gdzieś osobno datę ostatniego wyświetlenia strony i porównujesz ją za każdym razem z obecną. Przykład:
( data ostatniego wyświetlenia strony: 2008-07-24 )
- wchodzi ktoś na stronę dnia 2008-07-24 23:55:32 - nic się nie dzieje
- wchodzi ktoś inny dnia 2008-07-25 00:00:12 - wykonujesz TRUNCATE TABLE i aktualizujesz datę ostatniego wyświetlenia strony


Co do ciasteczek, to pamiętaj że są limity (max 20 ciasteczek na domenę i max 4KB danych na ciastko)
em1X
Cytat(Grangu @ 24.07.2008, 19:21:20 ) *
A to nie bedzie odrobine przegiecie jak komus wysle powiedzmy 100 ciastek??


lol. withstupidsmiley.gif . chyba lepiej zapisać tablicę 100-elementową do jednego ciastka? sciana.gif sciana.gif
nexis
A nie łatwiej na sesjach? Ustawia się tylko jedno ciasteczko (SID), a w sesji trzymasz tablicę z ID i datą. Mechanizmu działania chyba nie muszę na nowo tłumaczyć?!
Kocurro
Wystarczą dwie tabele, odpowiednie triggery i stored procedures + cron. W sesji przechowujesz id.

pozdr.
Grangu
Dzieki za pomoc zrobilem tabelke ip|strona|data zobaczymy w praniu co z ego wyjdzie smile.gif
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.