PDA

Pogčedajte punu verziju : IP2Country


mega023
17. 11. 2005., 18:52
OK

Treba mi IP2Country, neka free verzija... odlucio sam se za MaxMind Free (http://www.maxmind.com/app/geoip_country) iz prostog razloga sto redovno izbacuju update-ove (svakog meseca) a i free verzija je prilicno tacna 97% (ako je za dz i to je dosta)...

E sad ne bi hteo da cuvam celu bazu (3.8mb) u mysql-u jer mislim da bi to usporilo server (imam bas dosta poseta...), nego sam mislio da preko njihovog Pure PHP modula (http://www.maxmind.com/app/php) ucitam IP2country bazu u memoriju iz fajla (fajl je oko 800kb sto je manje od 3.8mb mysql-a) i da onda pretrazujem bazu.

Probao sam da to napisem ali mi ne ide...
Radi iz mysql-a ali ne radi iz fajla
Ako neko ima iskustva sa ovim cudom neka pogleda http://www.maxmind.com/app/php i primere na strani http://www.maxmind.com/download/geoip/api/php/
i neka proba da napise jednostavnu skriptu koja ce vracati rezultate iz fajla, jer meni jednostavno ne radi ali ni ne prijavljuje nikakvu gresku!

evo mala pomoc

geoip_load_shared_mem("/usr/local/share/GeoIP/GeoIP.dat");
$gi = geoip_open("/usr/local/share/GeoIP/GeoIP.dat",GEOIP_SHARED_MEMORY);




Cela ova stvar ce sluziti za serviranje reklama na sajtu, koji ima 3 reklame po strani i oko 100.000 ucitavanja strane na dan (matematika kaze da je to na dan oko 300.000 trazenja IP adrese na dan). Hocu samo da targetujem odredjene reklame na odredjene zemlje. Mozda budem cuvao ime zemlje u cooki-ju da ne bi morao onim koji dolaze opet da kopa trazi zemlju bez potrebe ...

Probao sam da koristim phpadsnew (www.phpadsnew.com) softwer koji je stvarno odlican, ali mislim da je i suvise robustan i pravi mi velik load na serveru pa hocu da napisem jedan jednostavan programcic koji ce da izbacuje reklame.


Uskoro treba da uzmem novi server samo za taj sajt
bice neki Dual Xeon 3,0 sa 1-2 GB rama i SCSI hdd-ovima
pa bi trebalo da to nosi phpadsnew bez problema, ali do tada ima jos 20ak dana... treba da napisem to do tad kako bi mi sadasnji server izdrzao.


Ako neko moze da pomogne neka mi se javi na PM.

hvala vam svima!

bluesman
17. 11. 2005., 19:45
Ne znam zašto imaš problem sa ubacivanjem cele tabele u mysql, ne opterećuje ti server veličina tabele nego kako manipulišeš sa njom. Ja imam kod mene celu bazu i sve radi prilično brzo.

Mislim da je čak sporuiji način na koji ti želiš to da uradiš.

Za phpAds se slažem. Odličan je ali je i meni pravio preveliki load, pa sam napravio najjednostavnije moguće rešenje....

$ads = array ( .... .)

$display = array_rand()

Ne može jednostavnije :)

mega023
17. 11. 2005., 21:01
Ne znam zašto imaš problem sa ubacivanjem cele tabele u mysql, ne opterećuje ti server veličina tabele nego kako manipulišeš sa njom. Ja imam kod mene celu bazu i sve radi prilično brzo.

Mislim da je čak sporuiji način na koji ti želiš to da uradiš.

Za phpAds se slažem. Odličan je ali je i meni pravio preveliki load, pa sam napravio najjednostavnije moguće rešenje....

$ads = array ( .... .)

$display = array_rand()

Ne može jednostavnije :)


Da da... i ja imam slicno (malo sporije) resenje ali su u array-u imena falova i onda radi include fajla koji mi treba... ali je lakse za menjanje reklama....

Kad malo bolje razmislim, najverovatnije cu ipak ubaciti IP2Country bazu u mysql... jedino sto cu morati da napisem to da cuva zemlju u cookie-e da ne mora bez potrebe da trazi po bazi ako je korisnik koji se vraca... (imam dosta poseta od istih korisnika)

Neznam da li da koristim pconnect ili samo connect za ovako nesto?

bluesman
17. 11. 2005., 22:20
Čekaj, jel' imaš ti neki login?
Ako imaš onda čuvaj u bazi korisnika njegov country, a proveri IP2CTRY samo ako nema setovan COOKIE. Znači, IP2C query se izvrši samo prvi put (ako ne briše cookie) i nemaš nikakvih problema.

Jedino što sam ja provalio je da su podaci neprecizni naročito za ove naše novije provajdere: ADSL, Cable, Wireless... ali mislim da možeš slobodno da stavi da je odavde čim ti IP2C vrati "nepoznato" :)

dinke
17. 11. 2005., 22:45
Tako i ja radim. Dakle kreiras tabelu tipa:

create table geoip(
id int unsigned primary key not null auto_increment,
ip_address varchar(15) not null,
country varchar(255) not null,
country_code char(2) not null,
region char(2) not null,
city varchar(255) not null,
postal_code varchar(6) not null,
latitude float(10,4) not null,
longitude float(10,4) not null,
dma_code tinyint unsigned not null,
area_code tinyint unsigned not null); i vozi :)

mega023
17. 11. 2005., 23:11
Čekaj, jel' imaš ti neki login?
Ako imaš onda čuvaj u bazi korisnika njegov country, a proveri IP2CTRY samo ako nema setovan COOKIE. Znači, IP2C query se izvrši samo prvi put (ako ne briše cookie) i nemaš nikakvih problema.

Jedino što sam ja provalio je da su podaci neprecizni naročito za ove naše novije provajdere: ADSL, Cable, Wireless... ali mislim da možeš slobodno da stavi da je odavde čim ti IP2C vrati "nepoznato" :)


nemam bazu korisnika...

marinowski
18. 11. 2005., 06:05
Ako i nemas bazu korisnika, polako je vremenom kreiras. Dobro je cuvati informacije o korisnicima. Vise ces ustedeti na taj nacin, kesirajuci ono sto si vec odredio, nego na menjanju GeoIP MySQL <-> eksterni file. Naravno, ovo ne vredi ako ti je sajt takav da posetioc dodje jednom i nikada vise :)

Za nase uslove GeoIP nije bas najtacniji. Najtacniji je za Ameriku, naravno. Mi ga koristimo (placenu verziju, hehe) na odredjivanju iz koje je zemlje dosao posetilac, posto su razlicite cene u razlicitim zemljama. Sa dodatnim proverama (npr. podaci popunjeni tokom registracije) je sasvim OK. Jednom-dva puta je bilo problema kada neka firma iz SAD dovuce svoj IP opseg u UK, ali to je stvarno bilo jednom dva puta.

Probao sam koristiti GeoIP na nivou grada i organizacije (kupio sam bazu za Madjarsku), ali tu je situacija bila mnogo sarenija, mnogo je cesce gresio nego sto sam ocekivao, pa je ostalo na nivou testiranja.

mega023
18. 11. 2005., 09:32
Ako i nemas bazu korisnika, polako je vremenom kreiras. Dobro je cuvati informacije o korisnicima. Vise ces ustedeti na taj nacin, kesirajuci ono sto si vec odredio, nego na menjanju GeoIP MySQL <-> eksterni file. Naravno, ovo ne vredi ako ti je sajt takav da posetioc dodje jednom i nikada vise :)

Za nase uslove GeoIP nije bas najtacniji. Najtacniji je za Ameriku, naravno. Mi ga koristimo (placenu verziju, hehe) na odredjivanju iz koje je zemlje dosao posetilac, posto su razlicite cene u razlicitim zemljama. Sa dodatnim proverama (npr. podaci popunjeni tokom registracije) je sasvim OK. Jednom-dva puta je bilo problema kada neka firma iz SAD dovuce svoj IP opseg u UK, ali to je stvarno bilo jednom dva puta.

Probao sam koristiti GeoIP na nivou grada i organizacije (kupio sam bazu za Madjarsku), ali tu je situacija bila mnogo sarenija, mnogo je cesce gresio nego sto sam ocekivao, pa je ostalo na nivou testiranja.
meni i treba IP2Country za US i EU
jer mi je najvise traffica odatle...

netreba mi nista fancy...
cisto da ako je iz USA ide jedna reklama a ako je iz azije druga.

baza korisnika je u izradi, ali to ce biti sve gotovo tek krajem godine...

marinowski
19. 11. 2005., 07:32
Ako ti treba po kontinentima, preporucujem ti da ukrupnis opsege koliko mozes: na taj nacin ces dobiti na brzini, jer ce baza biti manja.

ako je u pitanju adserver, nije za salu, to zna da bude optereceno.

ivanhoe
20. 11. 2005., 06:00
u svakom slucaju ne treba ti shared memory, u svim primerima upotrebe koje sam video za php to je bilo sporije i nestabilnije od mysql baze, pogotovo ako koristis persistent konekciju na bazu..

zextra
02. 12. 2005., 16:23
a kad vec imas server, sto ne bi koristio pure apache module? mislim da je to najbrze i najoptimizovanije resenje koje mozes dobiti.
uzgred, meni ip2country radi savrseno iz baze (jer nemam svoj server pa da koristim apache module...)