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.

Kopiuj
<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 ???

massther
  • Rejestracja:ponad 16 lat
  • Ostatnio:prawie 9 lat
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.

amator1
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 13 lat
  • Postów:61
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ę

edytowany 1x, ostatnio: amator1
Ktos
Moderator
  • Rejestracja:prawie 23 lata
  • Ostatnio:około 22 godziny
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.

amator1
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 13 lat
  • Postów:61
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.

Demonical Monk
  • Rejestracja:ponad 17 lat
  • Ostatnio:12 miesięcy
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.


Women were the reason I became a monk - and, ah, the reason I switched back...
amator1
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 13 lat
  • Postów:61
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...

MA
dokładnie o to pytałeś "(...)co przyjęli za ten warunek wylogowania(...)?"
Demonical Monk
No tak to działa wszędzie, łącznie z 4programmers (@see lista zalogowanych na głównej). Mam włączone autologowanie i jestem zalogowany od wieków, a mimo to nie zawsze jestem na liście osób online.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.