Grangu
23.07.2008, 16:14:55
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
23.07.2008, 16:22:40
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
23.07.2008, 16:28:51
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.
em1X
23.07.2008, 20:17:09
Grangu
24.07.2008, 18:21:20
A to nie bedzie odrobine przegiecie jak komus wysle powiedzmy 100 ciastek??
Puzi
24.07.2008, 18:43:43
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
24.07.2008, 18:56:05
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ł

pozdr.
Łukasz
Grangu
24.07.2008, 22:06:15
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

. 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
24.07.2008, 22:31:01
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
25.07.2008, 00:06:00
Cytat(Grangu @ 24.07.2008, 19:21:20 )

A to nie bedzie odrobine przegiecie jak komus wysle powiedzmy 100 ciastek??
lol.

. chyba lepiej zapisać tablicę 100-elementową do jednego ciastka?
nexis
25.07.2008, 00:59:24
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
25.07.2008, 01:02:55
Wystarczą dwie tabele, odpowiednie triggery i stored procedures + cron. W sesji przechowujesz id.
pozdr.
Grangu
25.07.2008, 21:13:39
Dzieki za pomoc zrobilem tabelke ip|strona|data zobaczymy w praniu co z ego wyjdzie
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.