Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Magazynowanie danych o odwiedzinach
-lukasamd-
post
Post #1





Goście







Witam,
chciałbym w pewnym serwisie magazynować dane o odwiedzających użytkownikach - jako że są mi potrzebne informacje o unikalnych odwiedzinach, wolę zapisywać IP odwiedzających.

Pytanie, co jest lepsze - wrzucanie danych do bazy a potem sprawdzanie czy już tam są, czy zapis do pliku.


a) baza:
- wrzucenie do jednego pola jako xxx.xxx.xxx.xxx - wydaje mi się jednak, iż nie jest to zbyt dobre rozwiązanie
- podzielenie adresu na 4 części i wrzucenie do poszczególnych pól, przy sprawdzaniu czy adres jest już w bazie również podział i sprawdzanie każdego pola - każdy z warunków spowoduje odrzucenie sporej ilości danych.


c) plik
- podobnie do bazy danych, przy sprawdzaniu wczytuję plik jako tablicę (albo całe adresy, albo z podziałem).

Co jest lepsze? Wydaje mi się, że lepszym rozwiązaniem jest zrzucanie tego na bazę - robienie tablicy z powiedzmy 1-10k rekordami i jej przeszukiwanie w php raczej zbyt szybkie nie będzie.

Ten post edytował lukasamd 30.10.2008, 09:01:02
Go to the top of the page
+Quote Post
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(lukasamd @ 30.10.2008, 09:00:26 ) *
- wrzucenie do jednego pola jako xxx.xxx.xxx.xxx - wydaje mi się jednak, iż nie jest to zbyt dobre rozwiązanie
Masz rację. Wydaje Ci się tongue.gif
Cytat(lukasamd @ 30.10.2008, 09:00:26 ) *
- podzielenie adresu na 4 części i wrzucenie do poszczególnych pól
Rozwiązanie pozbawione sensu.

Najlepszym rozwiązaniem jest baza danych. Jeśli chodzi o obawy to zastanów się po co powstały bazy danych? Po to by obsługiwać duże zbiory danych. Jakbyś miał tych rekordów milion czy więcej czy to może mógłbyś zacząć się zastanawaić. A 10000? To pierdnięcie dla bazy danych.
Go to the top of the page
+Quote Post
zegarek84
post
Post #3





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


jeśli chcesz to trzymać w jednym pliku i na to co potrzebujesz spokojnie wystarczy Ci baza SQLite...


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
pinochet
post
Post #4





Grupa: Zarejestrowani
Postów: 120
Pomógł: 12
Dołączył: 9.10.2008
Skąd: Tricity.Rumia()

Ostrzeżenie: (0%)
-----


takze adres mozesz na inta konwertowac jesli boisz sie o szybkosc wyszukiwania.
Jesli z jakis wzgledow masz opory przed bazą mozna tez stworzyc dla kazdego odwiedzającego nas adresu osobny plik.
Jednak jak juz koledzy wspomnieli BD jest duzo szybsza
Go to the top of the page
+Quote Post
lukas_nowicki
post
Post #5





Grupa: Zarejestrowani
Postów: 32
Pomógł: 1
Dołączył: 20.09.2006

Ostrzeżenie: (0%)
-----


Jako że niedawno tworzyłem skrypt który zlicza unikalne wejścia podzielę się nim smile.gif

Wersja która zapisuje unikalne wejścia do bazy

  1. CREATE TABLE `Ip` (
  2. `Id` int(11) NOT NULL AUTO_INCREMENT,
  3. `Ip` char(15) NOT NULL DEFAULT '',
  4. PRIMARY KEY (`Id`)
  5. ) TYPE=MyISAM AUTO_INCREMENT=1 ;


  1. <?php
  2.  
  3. $ip=$_SERVER['REMOTE_ADDR'];//check IP
  4. $sql = mysql_connect ('server', 'user','password')or die(mysql_error();//connect to database
  5. $baza=mysql_select_db('IP_db')or die(mysql_error());//chose database
  6.  
  7. $sql_query = mysql_query("SELECT Ip FROM Ip WHERE Ip='$ip'")or die(mysql_error());//check IP in database
  8. $rows=mysql_num_rows($sql_query);//how many find
  9.  
  10. if ($rows)//if IP exist in database
  11.        {
  12.        echo "Your IP exist in our Database";
  13.        mysql_close($sql);//disconnect with database
  14.        }
  15. else//if IP does not exist in database
  16.        {
  17.        $sql_query = mysql_query("INSERT INTO Ip VALUES ('','$ip')")or die(mysql_error());//save IP in database
  18.        mysql_close($sql);//disconnect with database
  19.        echo "You are here first time";
  20.        }
  21.  
  22. ?>


Wersja, która zapisuje unikalne wejścia /24h

  1. CREATE TABLE `ip` (
  2. `Id` int(11) NOT NULL AUTO_INCREMENT,
  3. `Ip` char(15) NOT NULL DEFAULT '',
  4. `Data` char(10) NOT NULL DEFAULT '',
  5. PRIMARY KEY (`Id`)
  6. ) TYPE=MyISAM AUTO_INCREMENT=1 ;


  1. <?php
  2.  
  3. $ip=$_SERVER['REMOTE_ADDR'];//check IP
  4. $time = time();//Setup of time
  5.  
  6. $sql = mysql_connect ('server', 'user','password')or die(mysql_error();//connect to database
  7. $baza=mysql_select_db('IP_db')or die(mysql_error());//chose database
  8.  
  9. $sql_query = mysql_query("SELECT Ip FROM ip WHERE Ip='$ip'")or die(mysql_error());//check IP in database
  10. $rows=mysql_num_rows($sql_query);//how many find
  11.  
  12. if ($rows)//if IP exist in database
  13.        {
  14.        $sql_query = mysql_query("SELECT Data FROM Ip WHERE Ip='$ip'");
  15.        $ip_time = mysql_fetch_assoc($sql_query);//return query as associative array
  16.        $ip_time['Data'] = ($ip_time['Data']+86400);//Adding to last visit data 24h    (86400= 24h * 60min * 60sec)
  17.        if ($ip_time['Data'] < $time)//if Last visit was over 24-h ago
  18.                {
  19.                $sql_query = mysql_query("UPDATE Ip SET Data='$time' WHERE Ip='$ip'");//update last visit data
  20.                mysql_close($sql);//disconnect with database
  21.                echo "Welcome again - you was here over 24h ago";
  22.                }
  23.        else//if Last visit was less than 24-h ago
  24.                {
  25.                mysql_close($sql);//disconnect with database
  26.                echo "Welcome again - you was here less than 24h ago";
  27.                }
  28.        }
  29. else//if IP does not exist in database
  30.        {
  31.        $sql_query = mysql_query("INSERT INTO Ip VALUES ('','$ip')")or die(mysql_error());//save IP in database
  32.        mysql_close($sql);//disconnect with database
  33.        echo "You are here first time";
  34.        }
  35.  
  36. ?>


Przerobienie tego na Twoje potrzeby nie powinno być trudne.

Pozdrawiam
Go to the top of the page
+Quote Post
empathon
post
Post #6





Grupa: Zarejestrowani
Postów: 246
Pomógł: 31
Dołączył: 13.11.2006
Skąd: się znamy?

Ostrzeżenie: (0%)
-----


Tak swoją drogą: http://webhosting.pl/Adres.IP.bedzie.nalez....osobowych.w.UE


--------------------
Goldenline: Łukasz Rodziewicz
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 07:39