Penggunaan fungsi GEOIP pada PHP

By On Monday, September 12th, 2022 Categories : Tanya Jawab

Penggunaan fungsi GEOIP pada PHP – Halo kawan-kawan semua, Makasih banyak sudah mau datang di web TrendWisata ini. Sore ini, saya di blog Trend Wisata dot com pengen sharing Q dan A yang mantab yang akan menunjukkan tentang Penggunaan fungsi GEOIP pada PHP. Sebaiknya tante dan om menonton dibawah ini:

Anda dapat menggunakan https://ip-api.io/ untuk mendapatkan nama negara, nama kota, garis lintang dan bujur. Ini mendukung IPv6.

Sebagai bonus itu akan memberi tahu apakah alamat ip adalah untuk node, proxy publik atau spammer. 

Kode Php:

$result = json_decode(file_get_contents('http://ip-api.io/json/64.30.228.118'));
var_dump($result);

Keluaran:

{
"ip": "64.30.228.118",
"country_code": "US",
"country_name": "United States",
"region_code": "FL",
"region_name": "Florida",
"city": "Fort Lauderdale",
"Zip_code": "33309",
"time_zone": "America/New_York",
"latitude": 26.1882,
"longitude": -80.1711,
"metro_code": 528,
"suspicious_factors": 
"is_proxy": false,
"is_tor_node": false,
"is_spam": false,
"is_suspicious": false

Anda dapat menggunakan API geolokasi Google untuk mendapatkan lat dan lon berdasarkan alamat IP pengguna:

  function findLatLonFromIP() {
    return new Promise((resolve, reject) => {
      $.ajax(
        url: `https://www.googleapis.com/geolocation/v1/geolocate?key=$friendlyPix.IpFilter.apiKey`,
        type: 'POST',
        data: JSON.stringify(considerIp: true),
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: (data) => 
          if (data && data.location) 
            resolve(lat: data.location.lat, lng: data.location.lng);
           else 
            reject('No location object in geolocate API response.');
          
        ,
        error: (err) => 
          reject(err);
        ,
      );
    });
  }

Kemudian Anda dapat menggunakan koordinat ini untuk mendapatkan alamat pengguna menggunakan geocoding API. Berikut adalah contoh yang mengembalikan negara:

  function getCountryCodeFromLatLng(lat, lng) {
    return new Promise((resolve, reject) => {
      $.ajax({
        url: `https://maps.googleapis.com/maps/api/geocode/json?latlng=$lat,$lng&key=$friendlyPix.IpFilter.apiKey`,
        type: 'GET',
        data: JSON.stringify(considerIp: true),
        dataType: 'json',
        success: (data) => 
          console.log('reverse geocode:', data.results[0].address_components);
          data.results.some((address) => 
            address.address_components.some((component) => 
              if (component.types.includes('country')) 
                return resolve(component.short_name);
              
            );
          );
          reject('Country not found in location information.');
        ,
        error: (err) => 
          reject(err);
        ,
      });
    });
  }

Di atas, lihat saja data.results untuk menemukan informasi yang Anda butuhkan (Kota, Jalan, Negara dll …) Gunakan dua fungsi di atas secara bersamaan:

findLatLonFromIP().then((latlng) => 
  return getCountryCodeFromLatLng(latlng.lat, latlng.lng);
).then((countryCode) => 
  console.log('User\'s country Code:', countryCode);
);

Untuk melanjutkan topik tentang IP, dalam artikel ini akan dianggap cara untuk mendefinisikan negara, kota dan informasi geo-asing lainnya pada IP-nya.

Geoip dalam bentuk ekstensi PHP

Mungkin perpustakaan yang paling sering digunakan untuk mendefinisikan IP (PHP.NET Dock). Itu tidak indah, karena basis data biner + mengkompilasi ekstensi php bekerja lebih cepat dari semua cara lain.

Instalasi di server Ubuntu:

Sudo apt-get install php5-geoip

Setelah
instalasi, unduh pembaruan terbaru dari basis data alamat IP:

Setelah tindakan ini, Anda harus me-restart PHP. Ini diperlukan agar juru bahasa PHP memuat ekstensi yang baru diinstal (php5-geoip) dan alamat IP baru.

Juga perlu secara berkala memperbarui basis data alamat IP:

Sudo wget -n http://geolite.maxmind.com/download/geoip/database/geolitecountry/geoip.dat.gz sudo gunzip geoip.dat.gz sudo mv geoip.dat / geoip /

Setelah pembaruan, juga perlu restart PHP untuk
menerapkan basis data alamat IP yang diperbarui:

Sudo service php5-fpm restart # Jika Anda menggunakan nginx # atau layanan sudo apache2 restart # jika Anda menggunakan Apache

Setelah geoip diinstal, itu dapat digunakan dalam kode, misalnya, jadi:

GeoIP dalam paket komposer

Metode ini hampir identik dengan geoip dalam bentuk ekstensi untuk PHP, dalam satu pengecualian: Anda tidak perlu menginstal ekstensi tambahan di server.

Ini berguna jika Anda tidak memiliki
hak root ke server dan Anda tidak dapat menginstal ekstensi PHP.

Kerugian dari metode ini adalah bahwa ia bekerja sedikit lebih lambat dibandingkan dengan ekspansi PHP yang dikompilasi.

Pertama-tama, Anda perlu mengunduh alamat BD IP dalam format khusus (.mmdb) dengan off. Situs, dan letakkan di folder apa pun di server yang tersedia untuk Anda:

Wgoleh -n http://geolite.maxmind.com/download/geoip/database/geolite2-country.mmdb gunzip geolit2-country.mmdb.gz mv
geolit2-country.mip / geoip /

Komposer membutuhkan geoip2 / geoip2: ~ 2.0

Setelah dua tindakan sederhana ini, Anda dapat mulai menggunakannya dalam skrip PHP Anda, misalnya:

negara ($ _ server [“remote_addr”]); Var_dump ($ geo-\u003e negara-\u003e isocode); Var_dump ($ geo-\u003e NAME-\u003e NAME);

Sypex geo.

Juga datang dalam bentuk kelas PHP dan perpustakaan biner. Sayangnya off. Paket komposer tidak memiliki. Tetapi Anda dapat menggunakan dan tidak mati:
https://packagist.org/packages/igi/sypexgeo.

Paket komposer ini belum baik, yang memungkinkan Anda untuk memperbarui alamat IP saat mengeksekusi perintah “Instal Komposer”.

Untuk menginstal paket komposer ini dan mengkonfigurasi pembaruan otomatis BD alamat IP, Anda perlu mendaftarkan pengaturan berikut dalam file Composer.json:

(“Memerlukan-dev”: (“@dev”), “Scripts”: (“pasca-instal-cmd”: [“IGI \\\\ SYPEXGEO \\\\ Composer :: installDatabases”]), “ekstra”: “HTTPS:”
//sypexgee.net/files/sxgeocountry.zip “,” sypexgeo_local “:” /var/www/at0m1x.dev/test/data/sxgeo.dat “))

Perhatikan pengaturan berikut:

  • koneksi paket harus ditempatkan di bagian yang membutuhkan-dev
  • saat menghubungkan paket, Anda harus menentukan tingkat stabilitas @Dev
  • di bagian Sypexgeo_Remote, bukannya sxgeocountry.zip, Anda dapat menentukan sxgeocity_utf8.zip
  • dalam parameter sypexgeo_local Anda perlu menentukan jalur Anda ke folder

Instalasi
komposer

Setelah menginstal perpustakaan itu sendiri, BD dari alamat IP dengan off akan diperbarui. Situs.

Contoh menggunakan kode PHP:

getcountry (“89.163.220.14”);

Selain menggunakan paket komposer, Anda juga dapat menggunakan API sisanya dari proyek ini, sebuah contoh: http://api.sypexgee.net/json/89.163.220.14 Tentang layanan online untuk mendefinisikan informasi geografis di bawah ini di artikel ini.

IP2Location.

Perpustakaan komposer lain dari luar
negeri.

Instalasi:

Komposer membutuhkan IP2Lokasi / IP2Location-PHP

Saat memasang paket komposer ini, dan juga ketika memperbaruinya, BD alamat IP juga akan diperbarui, yang terletak dengan cara ini:

/vendor/ip2location/ip2location-php/databases/ip2location-lite-db1.bin.

Menggunakan:

lookup (“89.163.220.14″, \\ iP2Location \\ Database :: Semua); Echo ”

"; Echo" Nomor IP: ". $ Records [" ipnumber "]." \\ N "; echo" Versi IP: "$ merekam [" ipversion "]." \\ N "; echo" Alamat IP: ". $ ["ipaddress"]. "\\ n"; echo "kode negara:" $ Records ["CountryCode"]. "\\ n"; echo "Nama negara:" $ merekam ["CountryName"]. "\\ n"; "

“;

Tabgeo.

Tampaknya relatif belum lama ini, versi pertama dari paket komposer
diterbitkan pada 27 September 2015.

Ini memposisikan dirinya sebagai yang tercepat, dibandingkan dengan pesaing seperti: geoip dan sypex geo. Tetapi kecepatan dicapai karena ukuran pangkalan yang kecil, sebagai berikut, perpustakaan ini hanya mendefinisikan kode negara.

Didistribusikan dalam bentuk paket komposer + basis data biner dalam formatnya sendiri.

Untuk menginstal perpustakaan ini, Anda hanya perlu menghubungkan paket komposer:

Komposer membutuhkan tabgeo /
negara

Pada saat yang sama, itu akan ditetapkan sebagai pustaka PHP dan database itu sendiri:

Contoh menggunakan Script PHP:

Perlu dicatat bahwa Tabgeo memungkinkan Anda untuk hanya mendapatkan kode dua digit negara dalam format ISO 3166-1 Alpha-2. Jika Anda membutuhkan sesuatu yang lebih, misalnya, untuk menentukan wilayah, kota, zona sementara, atau seterusnya, maka Anda perlu menggunakan misalnya geoip yang sama, karena Ini memungkinkan Anda untuk menentukan semua ini.

Layanan online untuk penargetan geografis

Atau, Anda dapat menggunakan layanan online khusus. Prinsip pekerjaan mereka sederhana: kami mengirimkan sampai ke parameter IP dan sebagai respons untuk mendapatkan geo-info dalam format JSON atau XML.

Keuntungan dari metode ini adalah dapat digunakan tidak hanya pada sisi PHP, tetapi juga di samping, misalnya, Javascript.

Tetapi ada kerugian substansial:

  • ini bekerja tidak secepat pustaka PHP;
  • anda tidak dapat
    memperbarui BD alamat IP;
  • server Anda dapat memblokir untuk sirkulasi yang sering.

Berikut adalah beberapa layanan online tersebut:

Kesimpulan

Hampir semua perpustakaan di atas menyediakan dua jenis basis data alamat IP:

  • ringan, hanya dengan daftar negara, sebagai aturan, dalam judul berisi negara;
  • lebih cepat, di mana negara-negara lain juga berisi info tentang kota-kota besar, sebagai aturan, dalam judul berisi kota dan lebih banyaknya;

Basis data yang lebih lengkap dari alamat IP dengan kota tentu akan bekerja sedikit lebih lambat karena fakta bahwa itu lebih dalam volume.

Paling dengan benar menggunakan geoip dalam bentuk ekstensi PHP. Karena Itu akan selalu bekerja dengan cepat. Anda juga dapat memperbarui basis data alamat IP.

Jika tidak ada kemungkinan untuk menginstal geoip dalam bentuk ekstensi PHP, Anda dapat menggunakan salah satu paket komposer: geoip, sypex geo, iP2Location atau Tabgeo.

Jika
penggunaan paket komposer untuk beberapa alasan tidak mungkin, maka tetap menggunakan layanan online. Tetapi perlu untuk membuat permintaan caching untuk layanan ini ke database Anda. Diperlukan komping agar tidak mengirim permintaan yang sama berkali-kali. Sudah cukup untuk mendapatkan informasi geografis untuk IP yang menarik ke layanan online, setelah itu untuk menyimpannya dalam database, dan kemudian mengambilnya dari database. Dengan demikian, Anda mengurangi jumlah permintaan ke layanan
online dan mengurangi kemungkinan bahwa layanan online akan memblokir Anda untuk beberapa permintaan.

Perlu dicatat bahwa hampir semua perpustakaan di atas memiliki versi gratis dan berbayar. Dalam versi berbayar Anda akan tersedia lebih banyak info geo daripada gratis.

Halo semuanya!

Saya tidak akan sering mengatakan itu, tetapi dari waktu ke waktu pengembang memiliki kebutuhan untuk mendefinisikan kota dengan IP dalam skrip PHP.

Misalnya, Anda memutuskan untuk
memfasilitasi pengguna untuk memasukkan informasi kontak saat melakukan pemesanan di toko online. Atau ingin mengatur bahasa antarmuka situs tergantung pada negara tempat pengunjung datang kepada Anda di situs.

Nah, paling sering definisi kota sesuai dengan IP di PHP dengan bantuan GeoIP, mungkin perlu bagi pengembang berbagai jaringan periklanan untuk menawarkan pengguna periklanan yang ditargetkan tergantung pada lokasi geografis.

Saya sendiri mempelajari negara itu melalui IP
dalam PHP Script hanya perlu satu kali ketika saya memutuskan untuk mengunggah widget dari berbagai jejaring sosial untuk pengguna yang berbeda. Pelajari lebih lanjut tentang mengapa itu tidak perlu dan apa yang terjadi pada akhirnya, saya akan menulis di artikel berikutnya.

Sementara itu, mari kita bicara tentang berapa banyak cara untuk mendefinisikan kota dan negara pada IP dalam PHP ada dan opsi apa untuk implementasinya.

PHP GeoIP – Fungsionalitas standar produksi pihak
ketiga

Saya secara khusus disebut deskripsi metode pertama. Faktanya adalah bahwa dalam PHP itu sendiri, tidak mungkin untuk menentukan kota dan negara pada alamat IP – bahasa tidak memiliki alat yang diperlukan untuk ini.
Tetapi dalam dokumentasi resmi ada petunjuk bagaimana melakukannya.

PHP Geoip adalah perpustakaan pihak ketiga yang perlu dihubungkan Selain itu, terlepas dari kenyataan bahwa deskripsi fungsi yang termasuk dalamnya adalah bagian dari dokumentasi PHP resmi –
http://php.net/ref.geoip .php.

Pada prinsipnya, motif pengembang PHP cukup dimengerti.

Pertama, dimasukkannya modul ini dalam set bahasa membutuhkan sejumlah besar sumber daya server.

Kedua, GeoIP PHP beroperasi berdasarkan daftar alamat IP, sesuai dengan negara dan kota tertentu. Oleh karena itu, GeoIP PHP memerlukan dukungan dan ekspansi / modernisasi konstan / modernisasi basis yang ada, yang akan menjadi sakit kepala kelebihan dari pengembang PHP.

Nah, dan ketiga,
definisi kota pada IP dalam PHP adalah kemungkinan yang agak jarang digunakan dalam praktik.

Sebagai hasilnya, karena faktor-faktor ini, PHP GeoIP adalah ekstensi pihak ketiga, yang didukung oleh API untuk integrasi pada situs yang ada, Maxmind terlibat, referensi yang ada dalam deskripsi perpustakaan ini.

Saya tidak akan terlibat dalam deskripsi proses instalasi ke server, karena Saya sendiri tidak bekerja dalam praktik, dan di internet saat ini penuh manual untuk menginstal PHP
Geoip pada server Linux dan Windows.

Saya hanya bisa mengatakan bahwa metode penentuan kota, negara, dan informasi geo lainnya tentang IP dalam PHP memiliki dua minus signifikan:

  1. Akses ke database informasi lengkap tentang alamat IP yang disediakan oleh Maxmind, dibayar. Selain itu, jumlah dalam dolar, cukup aneh 🙂 hanya opsi cut-off secara signifikan – http://dev.maxmind.com/geoip/geoip2/geolit2/
  2. Mempertimbangkan bahwa PHP GeoIP adalah ekstensi pihak ketiga, perlu
    diinstal secara terpisah di server yang, tunduk pada penggunaan hosting bersama, itu dapat menjadi acara kesulitan. Tentu saja, Anda dapat menghubungi dukungan teknis, tetapi bukan fakta bahwa Anda akan membantu Anda. Misalnya, atas permintaan, saya menolak untuk menginstal Sphinx.

Definisi kota dengan IP di PHP menggunakan pustaka alternatif

Cara lain untuk mengetahui kota pada IP dalam skrip PHP adalah dengan menggunakan pustaka server alternatif dan database untuk alamat
IP selain Maxmind.

Tetapi mereka memiliki kerugian yang sama seperti versi sebelumnya, karena hanya kompetitor Maxmind. Akses ke pangkalan dan kemungkinan menggunakan API mereka juga dibayar. Anda hanya bisa mendapatkan daftar negara dan kota di IP, sementara dengan tarif berbayar Anda bisa mendapatkan daftar data yang lebih luas.

Satu-satunya keuntungan atas PHP GeoIP adalah bahwa data perpustakaan diintegrasikan ke dalam kode PHP, dan tidak pada tingkat server, I.E. Mereka dapat
digunakan bahkan pada hosting bersama.

Contoh dari perpustakaan semacam itu disediakan oleh layanan DB-IP.com.

By the way, layanan yang ditentukan oleh saya tidak hanya menyediakan pustaka PHP untuk mendapatkan data geo pada klien IP, tetapi juga mengakses database informasi tentang alamat. Jadi, pada prinsipnya, tidak ada yang mencegah Anda menggunakannya dalam PHP Geoip untuk menggunakan API-nya, tetapi mengambil informasi dari sumber lain.

Nah, dan tentu saja tidak ada yang
mengganggu Anda untuk menulis parser file basis data file Anda sendiri untuk menerima informasi sendiri, tanpa izin pihak ketiga.

Cara menentukan kota di IP di PHP Online

Nah, dan jadi saya mendekati cara terakhir untuk mencari tahu negara di IP dalam PHP dan informasi geografis lainnya yang menggunakan dirinya dalam praktik.

Ini adalah dengan menggunakan API layanan online yang memungkinkan Anda menerima data pada alamat IP secara online.

Saya memutuskan untuk
menentukan kota di IP dalam PHP dengan tepat seperti ini, karena Dia kehilangan kelemahan utama dari yang sebelumnya. Yaitu, ini adalah yang paling mudah dalam implementasi – Anda tidak perlu menginstal apa saja dan mengkonfigurasi di server, dan, bahkan lebih, tanyakan tentang dukungan teknis ini untuk hosting bersama.

Untuk mendapatkan informasi IP yang diperlukan, cukup kirim permintaan ke URL tertentu dan proses jawabannya.

Adapun nilai penggunaannya – kebanyakan dari mereka juga
dibayar, karena Bekerja, sebagai aturan, berdasarkan IP basis komersial yang ada. Tetapi ada juga layanan gratis yang menyediakan informasi lengkap seperti komersial, tetapi dapat diperoleh dalam volume tanpa batas.

Benar, mereka dengan cepat menghentikan keberadaan mereka, cukup aneh, karena Bertahan dari pemberian layanan tersebut sangat sulit. Ini menunjukkan analisis saya tentang layanan online gratis untuk mendefinisikan kota dan negara IP, yang saya lakukan untuk tujuan pribadi.
Mereka melintas di banyak situs, tetapi ketika mencoba memanfaatkan mereka, jelas bahwa mereka menghentikan keberadaan mereka.

Akibatnya, saya menemukan apa yang saya butuhkan, apa yang ingin saya putuskan dengan Anda – http://www.geoplugin.com/

Layanan ini memungkinkan Anda untuk mendefinisikan informasi kota dan IP lainnya di situs web layanan, dan ini dari kode. Selanjutnya, saya akan mengutip contoh mendefinisikan negara dengan IP dalam skrip PHP menggunakan geoplugin.com. Kode
ini dilakukan dengan menggunakan kode yang dijelaskan dalam artikel dengan referensi.

“”, “Kota” \u003d\u003e “”); if (filter_var ($ klien, filter_validate_ip)) $ ip \u003d $ klien; ElseIf (filter_var ($ forward, filter_validate_ip)) $ ip \u003d $ ke depan; Lain $ ip \u003d $ remote; $ ip_data \u003d @json_decode (file_get_contents (“http://www.geoplugin.net/json.gp?ip\u003d”. $ ip)); if ($ ip_data && $ ip_data-\u003e geoplugin_countryname! \u003d null) ($ result \u003d $
ip_data-\u003e geoplugin_countrycode;) echo $ hasil;) ?\u003e.

Seperti yang Anda lihat, esensi dari kode yang diberikan adalah untuk menentukan alamat IP klien, dan kemungkinan menghubungkannya melalui proxy, dan mengirimkan permintaan ke API Geoplugin dengan decoding lebih lanjut dan analisis hasil.

Dalam contoh saya, seperti yang telah saya katakan, hasil skrip ini akan menjadi kode negara klien negara. Secara umum, daftar lengkap parameter yang dikembalikan terlihat seperti ini
(misalnya, memutuskan untuk mengambil IP dari wilayah Novosibirsk Federasi Rusia):

(“Geoplugin_request”: “geoplugin_status”: 200, “geoplugin_credit”: “Beberapa data yang dikembalikan termasuk data geolit \u200b\u200byang dibuat oleh Maxmind, tersedia dari http: \\ / / www.maxmind.com<\/a>. “,” Geoplugin_City “:” Novosibirsk “,” Geoplugin_Region “,” Novosibirsk “,” Geoplugin_areacode “:” 0 “,” Geoplugin_Dmacode “:” 0 “,”
Geoplugin_countryCode “:” Ru “,” Geoplugin_countryName “:” Federasi Rusia ” “,” geoplugin_contininentcode “:” UE “,” geoplugin_latitude “:” 55.09 “,” geoplugin_longitude “:” 82.6519 “,” geoplugin_regioncode “:” 53 “,” geoplugin_regionname “:” novosibirsk “,” geoplugin_currencycode “:” Gesol “,” “” “geoplugin_currencyssymbol”: “Rub”, “geoplugin_currencyssymbol_utf8”: “\\ u0440 \\ u0433 \\ u0431”, “Geoplugin_CurrencyConverter”: 58.9289)

Seperti yang Anda lihat, layanan ini menggunakan
Maxmind yang disebutkan sebelumnya (parameter geoplugin_credit), tetapi informasi berbayar atau tidak – sulit untuk berasumsi. Di satu sisi, referensi ke sumber menyarankan bahwa akses gratis ke IP BD digunakan, tetapi di sisi lain, kami tidak hanya melihat negara dan kota, tetapi juga banyak informasi, termasuk kota, koordinat geografis dari koordinat (Langititude, Latitude), mata uang saat ini dan bahkan jalannya.

Jadi layanan ini dapat disebut PHP Geoip Online. Ini hanya perbedaannya
dari analog server adalah bahwa ia menerima informasi IP sedikit lebih lambat karena kurangnya caching server. Tetapi ini tidak berarti bahwa itu tidak pada server geoplugin 😉 sehingga kekurangan ini, lebih tepatnya, simbolis.

Bagaimanapun, pengembang Geoplugin layak bertepuk tangan, dan, terutama, juga untuk fakta bahwa mereka bahkan tidak mencekik iklan kontekstual situs web mereka. Itu. Ketika mereka bertahan sama-sama – tidak jelas. Satu-satunya cara untuk memberi tahu mereka “Terima
kasih” adalah sumbangan di akun PayPal.

Ngomong-ngomong, saya menyebut saya dengan kode PHP untuk mendefinisikan kota IP universal. Anda dapat menggunakannya untuk menerima data geo dan menggunakan layanan lain. Satu-satunya hal yang Anda butuhkan akan berubah dalamnya adalah URL API layanan dan nama parameter yang diperlukan yang perlu Anda dapatkan.

Saya memiliki segalanya tentang ini. Tuliskan umpan balik Anda pada artikel di komentar di bawah ini dan jangan lupa untuk berbagi
catatan dengan teman-teman Anda di jejaring sosial.

P.: Jika Anda memerlukan situs web atau Anda perlu mengedit ke yang sudah ada, tetapi untuk ini tidak ada waktu dan keinginan, saya dapat menawarkan layanan saya.

Lebih dari 5 tahun pengalaman Pengembangan situs profesional. Bekerja dengan PHP., Opencart., WordPress., Laravel, Yii., Mysql., PostgreSQL., Javascript., Reaksi, Angular. dan
teknologi pengembangan web lainnya.

Pengalaman dalam mengembangkan proyek berbagai tingkatan: pendaratan, situs Perusahaan, Toko Online, Crm., portal.. Termasuk dukungan dan pengembangan Highload Projects.. Kirim aplikasi Anda untuk email [Dilindungi Email] .

Di mana “sepeda” saya disebutkan dengan kecepatan pekerjaan yang tinggi. Salah satu pertanyaan
populer adalah kemungkinan menentukan kota dengan IP.

Dan di sini beberapa bulan kemudian, proyek ini dimulai seperti “untuk bersenang-senang” ditumbuhi proyek independen.
Situs terpisah dibuka didedikasikan untuk proyek Sypex Geo, di mana Anda dapat mengunduh versi API terbaru dan database, dan juga membiasakan diri dengan dokumentasi.

Bagi mereka yang paling ingin benar-benar menyukai kebenaran definisi kota dengan IP – berikut adalah tautan ke halaman demo. Dan di bawah
habracat, saya akan menjelaskan beberapa detail teknis dan memberikan hasil pengujian kecil.

Format Sypex Geo 2.1

Sejak publikasi artikel terakhir, format Sypex Geo (singkatan Sxgeo) dioptimalkan, dan juga menambahkan kemampuan untuk memasukkan dua buku referensi di database – kota dan wilayah.

Saat membuat format baru, prioritas berikut dimasukkan:

  • kecepatan tinggi
  • konsumsi sumber daya yang rendah
  • keterbukaan (Binary Bin dan Api Spesifikasi
    Format File Binary)
  • universalitas (kemampuan untuk membuat basis data dengan set data apa pun)

Format ini memungkinkan Anda untuk menyimpan data dalam pengkodean yang berbeda. Setelah meninggalkan beta, skrip akan dipublikasikan untuk mengkonversi database dari MySQL ke file basis data biner.

Informasi berikut disimpan dalam database:

  • AKU MELAKUKANNYA
  • ISO 3166-1 Kode negara (dua campuran)
  • Kode Fips 10-4 wilayah (dua-campuran)
  • Nama
    wilayah (opsional)
  • Kota
  • Garis Lintang
  • Garis bujur
  • Zona waktu (opsional)

Daftar ini dapat diubah dan / atau diperluas jika perlu. Informasi lebih lanjut tentang format Sxgeo 2.1 dapat ditemukan di situs web.

Database sendiri

Setelah kenalan yang sangat dekat dengan sistem geolocation Kota Geolite yang populer dari Maxmind, diputuskan untuk membuat basis data sendiri. Masalahnya adalah di kota geolit \u200b\u200bada sangat banyak
ketidakakuratan, sampah, duplikat, penghancuran band yang berlebihan, serta masalah dengan kota-kota bekas USSR (misalnya, bukan kota, nama-nama perusahaan atau nama yang bertanggung jawab dari Whois) diambil.

Saat ini, pangkalan ini didasarkan pada Geolite City, tetapi sudah berisi cakupan Rusia yang sepenuhnya didaur ulang, Ukraina dan Belarus. Negara-negara lain secara bertahap akan disempurnakan, terutama CIS dan Eropa. Basis data Sypex Geo City berisi nama-nama kota dan wilayah dalam
bahasa Rusia di UTF-8 (tidak ada lagi nama diterjemahkan), serta zona waktu.

Selain itu, database lain tersedia untuk format Sxgeo 2.1.

Menggunakan

Menggunakan Sypex Geo API disederhanakan sebanyak mungkin.
1. Salin sxgeo.php dan sxgeocity.dat (atau database lain) ke server 2. Sambungkan file sxgeo.php ke skripnya dengan menambahkan baris sertakan (“sxgeo.php”); 3. Buat objek Sxgeo // $ Sxgeo \u003d New Sxgeo (); // mode default, sxgeo.dat $ sxgeo file basis data \u003d
sxgeo baru (“sxgeocity.dat”, sxgeo_batch | sxgeo_memory); // Mode tercepat 4. Tentukan kota (Kota Sxgeo, Geolite City, iPGeobase) $ Sxgeo-\u003e Dapatkan ($ IP); (Mengembalikan informasi tentang kota, tanpa nama wilayah dan zona waktu) // $ sxgeo-\u003e getcityfull ($ IP); (Mengembalikan informasi lengkap tentang kota dan wilayah)

Pengujian Produktivitas

Dan untuk pencuci mulut, pengujian kinerja komparatif kecil. Geolite API dan Geobaza API adalah lawan. Semua peserta uji
menggunakan basis data biner dari format mereka sendiri, dan gunakan API pada PHP. Pengujian berlalu di bawah Win 7 (pada proporsi Linux disimpan), PHP 5.2.17.

Hasil setelah 10 run untuk setiap API dalam dua mode (biasa dan dengan caching dalam memori) rata-rata dan pembulatan puluhan. Array 50.000 alamat IP acak dibuat untuk setiap proses, dan siklus mencari setiap algoritma.

Penawaran dan keinginan dipersilakan. Mereka yang mencari ingin membantu dengan porting API ke bahasa lain,
dan penciptaan modul untuk Apache dan Nginx.

Diperbarui: 05/05/2021.

103583

Jika Anda melihat kesalahan, pilih fragmen teks dan tekan Ctrl + Enter

Penggunaan fungsi GEOIP pada PHP | admin | 4.5