Földrajzi célzás, hogyan lehet a saját kezét

Nyomtatható változat

Erre, azt akartam, hogy a PHP nyelvet. Nem igazán tudom, a nyelv, így megkértem, hogy segítsen társam programozók - ez nőies webfejlesztés. Jó programozók szeretnék tenni valamit, hogy senki előttük nem tette meg, és mit kell tenni rendkívül nehéz, de önmagában nem tűnik reálisnak, technológusok dicsőséges cég Analóg-csoport (különösen nagyra mr.troll) sem kivétel. Cég honlapja természetesen rendkívül szörnyű, de ez egy okos lépés, hogy ne ügyfeleket, majd jön, és fizetni egy csomó pénzt a munka =). Valószínűleg a hatóságok ments ezt a cikket blozhike közzé, de még mindig kell írni.







Most van valamiféle segítséget írási és hogyan kell optimalizálni az adatok keresése PHP.

Tehát a feladat: a keresés az ország, sőt, az orosz és a városokban. Keresni egy fájlt egy ország swing államok IP és kivonat belőle GeoIPCountryWhois.csv fájlt.

Szoftver, amely rendelkezésre áll keresésének ez a fájl nem is optimalizálták, így optimalizálja a fájl maga:

Ahelyett, hogy a 8-megabájtnyi adat kapott csak 1 megabájt, nos, igen? Most, hogy itt végeztünk, az eredeti fájl egy rekord típusa:

Mezei C ipgeobase.ru db_files.tar.gz kell töltenie egy fájlt (vagy .zip). Csomagolja ki a fájlt oda cidr_ru_slave_index.db geo_ip mappát ugyanazon dobja a többi gazdaságot. Ez a fájl egy kis 300KB, úgy, hogy már nem optimális.

Hogy keressen egy orosz ip kell tölteni a fájlt a memóriába (tömb), majd nézd meg a tömb keresési funkciók:

Részletek arról, hogyan néz ki a világ: az adatok fájl nem töltődik be a memóriába, ami nagyban takarít meg. Megtalálása és olvasás történik közvetlenül a fájl a lemezen. A keresés végrehajtása dichotőmia, azaz minden iteráció után a hurok, tudjuk, egyre több van szüksége ahhoz, hogy vagy kevesebb. Kiderült, hogy a 100.000 tartományban találunk a maximális a 17. kísérlet. Speed ​​Reading fájlból valójában rendkívül gyors, így a keresési sebesség nagymértékben meghaladja mi késztette umi-cms és CN szoftver.







Használható funkciók, akkor:

Hol $ temp lehet ismerős formátumban 127.0.0.1 és a telefonszámot. Először a keresést Oroszország, és ha semmi sem található, akkor már keresett a világ minden tájáról.

Ui Most azt is megpróbálja optimalizálni a master file 300 kilobájt memóriával tömb feltölteni, és keresni közvetlenül a lemezen, bár most is használja a keresési kettősség.

Nyugodtan észrevételeket egy cikket, legalább egy pár szót!

Köszönöm szépen a cikket, próbálja megérteni, mi ez, mint php, és ez csak ide a nyomait C vagy C ++, bár mostanra világossá vált, hiszen olyan programokat írni, hogy a hozzáférést a fájlokat, a kérdés -, hogy milyen autót fog kezelése? az oldalon szerveren, vagy a gépen látogató?
while (feof ($ handle)!) - Azt hiszem, nem ez a legjobb megoldás (és hirtelen a végén egy csomó hiányosságok fájl)
jobb valamit tenni a hasonlatosságára while (fscanf (File "% i.% i.% i.% i", ip1, ip2, IP3 IP4) == 4)
majd hiányosságok olvasta el nem éri a fájl Kona, nyugodt kerül vissza 0, vagy negatív hibakódot, és lehetnek formájában adatduplikáció-kérdéseket.
Hogyan kell kezelni az áramlás nem érti, meg tudná magyarázni, hogy a $ buffer = fgets ($ handle, 4096);
list ($ start, $ stop, $ inetnum, $ ország, $ város $ régió $ kerület, $ status, $ szolga, $ n_slave) = split ( "", $ buffer), listát, és szét a standard funkciók?

PHP - szerveroldali nyelvet. A megfelelő módja az, hogy az
míg a ($ puffer = fgets ($ fogantyú, 4096))
fgets () - szól a következő sort (max 4096 karakter) php5 maximális elhagyható. listát, és osztott - standard funkciók.

Szeretném megjegyezni, hogy az alap IP rosiyskih használt szabálytalan szerkezetű: senki szintet, ott kell lennie öt „falusi / városi> rayon-> Region / oblast-> alá RF-> aministrativny kerület”. Ezért pontos ez a bázis nem nevezhető.

Normál DB én nem találtam, így sajnos. meg kell használni azokat, amelyek.

És milyen szinten nincs elég? Véleményem szerint a város szintjén elég célozni.




Kapcsolódó cikkek