Licznik odwiedzin

0

Witam

jeśli nie mam - z założenia - serwera PHP i bazuje tylko na FLEX i AS3- gdzie tworzę prosty plik XML, w którym znajduje się licznik odwiedzin oraz IP userów.

<root>
  <counter>1000000</counter>
  <IPusers>
    <dataIP>127.0.0.1</dataIP>
    <dataIP>127.0.0.1</dataIP>
    <dataIP>127.0.0.1</dataIP>
    <dataIP>127.0.0.1</dataIP>
    ............
    ...........
  </IPusers>
</root>

Czy to jest dobry sposób ? Jeśli wejdzie np. 10 000 000 osób to jak będzie wyglądał taki plik- wielkość itd. jak to później wpłynie na wydajność aplikacji, która żeby sprawdzić czy dane IP już było czy nie musi przemielić tysiące linii w poszukiwaniu jednego adresu - wiem, w SQL byłoby super, ale póki co chciałbym uzyskać od Was opinie, co o tym myślicie ???

0

66 znaków bez IP na pozostałą część xml'a przy założeniu że nie masz tabulatorów i znak końca linii to karetka i koniec linii, czyli windowsowy styl.
34 znaki na <dataIP>000.000.000.000</dataIP>\r\n, czyli założenie pesymistyczne
34 * 10 000 000 = 340 000 000 znaków
Zakładając że nie potrzebujesz kodowania UTF-8 (czy innego unicode), a jakieś ISO 8859-1 wystarczy, to masz przy 10 mln zalogowanych IP plik o wielkości 340 000 066 bajtów ~ 332 031 KB ~ 324 MB. Trochę sporo.
Jeśli miałyby to być tylko logi, to ok, ale jeśli masz w tym coś sprawdzać to trochę lipa. To już lepiej mieć plik płaski tylko z IP posortowany i w nim szukać. Oczywiście samemu tego nie implementować, tylko znaleźć program, który od razu wstawi nowy IP w odpowiednie miejsce żeby zachować sortowanie oraz który dzięki temu posortowaniu znacząco przyspieszy wyszukiwanie.

0

Mam jeszcze jedno pytanie dotyczące liczników odwiedzin.
Załóżmy, że mamy taką sytuację, że zakładam COOKES dla nowego użytkownika i zapisuje odpowiednie dany do bazy danych. Po ponownym wejściu tego usera, sprawdzam czy jest "ciasteczko", ok, istnieje, więc nie dodaje usera do bazy, ale po nasŧępnym wejściu - tutaj użytkownik, zakładając tylko, usunął sobie wszystkie ciasteczka, albo zrobił format dysku - sprawdzam ponownie czy istnieje ciasteczko, oczywiście brak, teraz mógłbym sprawdzić po IP, ale skąd mam wiedzieć czy to IP jest tego użytkownika, czy już należy do kogoś innego, może miał dynamiczne IP ? , no i dla mnie pozamiatane... trzeba dodać znowu do bazy usera, który - z założenia, wiem, że już był na stronie, tylko teraz po tych wszystkich zdarzeniach jest znowu w bazie jako nowy gość.

Mowa tu oczywiście o użytkownikach niezarejestrowanych , bo dla mnie licznik odwiedzin = ilość użytkowników z bazy, a w ten sposób j.w. będzie jakaś tolerancja błędu

dodam jeszcze, że chodzi o naliczanie ogólne, ile w ogóle odwiedziło userów daną stronę

0

Niestety, możliwe jest, aby użytkownik usunął wszystkie ślady poprzedniej bytności swojej na stronie i aby znów został policzony jako nowy odwiedzający. Tak to działa.
Istnieją jednak mozliwości znacznie utrudniające - oprócz zwykłego ciasteczka zostawianie ciasteczek Flashowych, localStorage i parę innych. Zobacz evercookie: http://samy.pl/evercookie/

Sama przeglądarka tez może być śledzona i unikalna, https://panopticlick.eff.org/ - pod względem ustawień, zainstalowanych rozszerzeń, user-agenta, adresu IP i tak dalej.

0

Dzięki, a jak wygląda sprawa z licznikiem online, tzn. łatwo policzyć tych, którzy są zalogowani, ale problem pojawia się, gdy user nie wyloguje się. Jak podjeść do tego tematu ? skąd mam wiedzieć czy user jest aktywny na stronie, czy coś robi, a może poszedł na obiad- bo licznik online będzie go cały czas liczył, najchętniej bym go wylogował...

Niektóre serwisy trzymają cały czas zalogowanego użytkownika, w sumie tak by było najprościej, bo to jego sprawa, a niektóre wylogowują, tylko co przyjęli za ten warunek wylogowania go z bazy.

0

Zasada jest prosta: zapisujesz sobie ostatni czas wejścia na stronę, jeśli obecny różni się o minimum pięć/dziesięć/ile tam sobie ustalisz minut to uznajesz go za nieaktywnego.

0
Demonical Monk napisał(a)

Zasada jest prosta: zapisujesz sobie ostatni czas wejścia na stronę, jeśli obecny różni się o minimum pięć/dziesięć/ile tam sobie ustalisz minut to uznajesz go za nieaktywnego.

To chyba oczywiste, ale nie o to pytałem...

1 użytkowników online, w tym zalogowanych: 0, gości: 1