Konfigurácia
Publikuje sa do config/geolocation.php. Celý súbor so zbalenými blokmi rate_limits jednotlivých poskytovateľov (tie opisuje časť Obmedzenie požiadaviek):
use RoundlyConsulting\Geolocation\Providers\DefaultLocationProvider;
use RoundlyConsulting\Geolocation\Providers\GoogleProvider;
use RoundlyConsulting\Geolocation\Providers\IP2LocationProvider;
use RoundlyConsulting\Geolocation\Providers\IpInfoProvider;
use RoundlyConsulting\Geolocation\Providers\MaxMindDatabaseProvider;
use RoundlyConsulting\Geolocation\Providers\MaxMindWebServiceProvider;
return [
'pipeline' => ['maxmind_database', 'maxmind_web', 'ip2location', 'ipinfo', 'google', 'default'],
'providers' => [
'maxmind_database' => MaxMindDatabaseProvider::class,
'maxmind_web' => MaxMindWebServiceProvider::class,
'ip2location' => IP2LocationProvider::class,
'ipinfo' => IpInfoProvider::class,
'google' => GoogleProvider::class,
'default' => DefaultLocationProvider::class,
],
'timeout' => env('GEOLOCATION_TIMEOUT', 5),
'cache' => [
'enabled' => env('GEOLOCATION_CACHE', false),
'store' => env('GEOLOCATION_CACHE_STORE'),
'ttl' => env('GEOLOCATION_CACHE_TTL', 86400),
'prefix' => env('GEOLOCATION_CACHE_PREFIX', 'geolocation'),
],
'events' => [
'enabled' => env('GEOLOCATION_EVENTS', true),
],
'default' => [
'humanReadable' => env('GEOLOCATION_DEFAULT_HUMAN_READABLE', ''),
'street' => env('GEOLOCATION_DEFAULT_STREET', ''),
'city' => env('GEOLOCATION_DEFAULT_CITY', ''),
'country' => env('GEOLOCATION_DEFAULT_COUNTRY_ISO_CODE', ''),
'latitude' => env('GEOLOCATION_DEFAULT_LATITUDE', 0.0),
'longitude' => env('GEOLOCATION_DEFAULT_LONGITUDE', 0.0),
],
'services' => [
'ipinfo' => [
'url' => env('IPINFO_URL', 'https://ipinfo.io/'),
'token' => env('IPINFO_TOKEN'),
'retry' => env('IPINFO_RETRY_TIMES', 3),
'retry_delay' => env('IPINFO_RETRY_DELAY_MS', 100),
'rate_limits' => [/* see Rate limiting */],
],
'google' => [
'url' => env('GOOGLE_MAPS_URL', 'https://maps.googleapis.com/maps/api'),
'key' => env('GOOGLE_MAPS_API_KEY'),
'retry' => env('GOOGLE_MAPS_RETRY_TIMES', 3),
'retry_delay' => env('GOOGLE_MAPS_RETRY_DELAY_MS', 100),
'rate_limits' => [/* ... */],
],
'ip2location' => [
'url' => env('IP2LOCATION_URL', 'https://api.ip2location.io'),
'key' => env('IP2LOCATION_API_KEY'),
'retry' => env('IP2LOCATION_RETRY_TIMES', 2),
'retry_delay' => env('IP2LOCATION_RETRY_DELAY_MS', 100),
'rate_limits' => [/* ... */],
],
'maxmind_web' => [
'enabled' => env('MAXMIND_WEB_ENABLED', false),
'base_url' => env('MAXMIND_WEB_URL', 'https://geoip.maxmind.com/geoip/v2.1'),
'account_id' => env('MAXMIND_ACCOUNT_ID'),
'license_key' => env('MAXMIND_LICENSE_KEY'),
'service' => env('MAXMIND_WEB_SERVICE', 'city'), // city|country|insights
'retry' => env('MAXMIND_WEB_RETRY_TIMES', 2),
'retry_delay' => env('MAXMIND_WEB_RETRY_DELAY_MS', 100),
'rate_limits' => [/* ... */],
],
'maxmind_database' => [
'enabled' => env('MAXMIND_DB_ENABLED', false),
'path' => env('MAXMIND_DB_PATH', storage_path('app/geolocation/GeoLite2-City.mmdb')),
// Used by the geolocation:db:update command to download the .mmdb file.
'license_key' => env('MAXMIND_LICENSE_KEY'),
'edition' => env('MAXMIND_DB_EDITION', 'GeoLite2-City'),
'download_url' => env('MAXMIND_DB_DOWNLOAD_URL', 'https://download.maxmind.com/app/geoip_download'),
],
],
];Všetky kľúče
| Kľúč | Predvolené | Env | Účel |
|---|---|---|---|
pipeline | všetkých šesť mien | — | Poradie mien poskytovateľov; vyhráva prvý neprázdny výsledok a nedostupný poskytovateľ sa preskočí. Pribalené meno, ktoré ste z providers odstránili, sa preskočí; akékoľvek iné nezaregistrované meno vyhodí UnknownProviderException a hodnota, ktorá nie je zoznam, InvalidConfigurationException. Prázdny zoznam prejde providers v ich vlastnom poradí. |
providers | pribalená mapa | — | Meno → trieda poskytovateľa. Každá položka potrebuje meno; položka bez mena vyhodí UnknownProviderException. |
timeout | 5 | GEOLOCATION_TIMEOUT | HTTP timeout v sekundách pre všetkých HTTP poskytovateľov, najmenej 1. Rovnaké pravidlo platí aj pre timeout nastavený pre jedno volanie (prázdny sa považuje za nenastavený, takže platí konfigurácia). |
cache.enabled | false | GEOLOCATION_CACHE | Cachovať úspešné vyhľadávania a vzdialenosti (nikdy nie záložnú polohu). |
cache.store | null | GEOLOCATION_CACHE_STORE | Cache store; null alebo prázdna hodnota = predvolený store. Hodnota, ktorá nie je reťazcom, vyhodí výnimku. |
cache.ttl | 86400 | GEOLOCATION_CACHE_TTL | Platnosť cache v sekundách, najmenej 1. |
cache.prefix | geolocation | GEOLOCATION_CACHE_PREFIX | Prefix kľúčov v cache. Prázdna hodnota sa považuje za nenastavenú (platí predvolená); hodnota, ktorá nie je reťazcom, vyhodí výnimku. |
events.enabled | true | GEOLOCATION_EVENTS | Odosielať udalosti o výsledku. |
default.humanReadable | '' | GEOLOCATION_DEFAULT_HUMAN_READABLE | Zobrazovaný názov záložnej polohy. |
default.street | '' | GEOLOCATION_DEFAULT_STREET | Ulica záložnej polohy. |
default.city | '' | GEOLOCATION_DEFAULT_CITY | Mesto záložnej polohy. |
default.country | '' | GEOLOCATION_DEFAULT_COUNTRY_ISO_CODE | ISO kód krajiny záložnej polohy. |
default.latitude | 0.0 | GEOLOCATION_DEFAULT_LATITUDE | Zemepisná šírka záložnej polohy, -90 až 90. Prázdna hodnota sa považuje za nenastavenú (0.0); hodnota, ktorá nie je číslom, vyhodí výnimku. |
default.longitude | 0.0 | GEOLOCATION_DEFAULT_LONGITUDE | Zemepisná dĺžka záložnej polohy, -180 až 180. Prázdna hodnota sa považuje za nenastavenú (0.0); hodnota, ktorá nie je číslom, vyhodí výnimku. Kým sú všetky hodnoty default.* prázdne alebo nulové (ako po inštalácii), poskytovateľ default odpovie null. |
services.ipinfo.url | https://ipinfo.io/ | IPINFO_URL | Základná URL IPinfo. Prázdna hodnota sa považuje za nenastavenú (platí predvolená); hodnota, ktorá nie je reťazcom, vyhodí výnimku. |
services.ipinfo.token | null | IPINFO_TOKEN | Token IPinfo; pri null sa neposiela (neautentifikovaná požiadavka). |
services.ipinfo.retry | 3 | IPINFO_RETRY_TIMES | Počet opakovaní, 0 alebo viac. |
services.ipinfo.retry_delay | 100 | IPINFO_RETRY_DELAY_MS | Pauza medzi opakovaniami v ms, 0 alebo viac. |
services.google.url | https://maps.googleapis.com/maps/api | GOOGLE_MAPS_URL | Základná URL Google Maps API. Prázdna hodnota sa považuje za nenastavenú (platí predvolená); hodnota, ktorá nie je reťazcom, vyhodí výnimku. |
services.google.key | null | GOOGLE_MAPS_API_KEY | API kľúč Google Maps. |
services.google.retry | 3 | GOOGLE_MAPS_RETRY_TIMES | Počet opakovaní, 0 alebo viac. |
services.google.retry_delay | 100 | GOOGLE_MAPS_RETRY_DELAY_MS | Pauza medzi opakovaniami v ms, 0 alebo viac. |
services.ip2location.url | https://api.ip2location.io | IP2LOCATION_URL | Základná URL IP2Location.io. Prázdna hodnota sa považuje za nenastavenú (platí predvolená); hodnota, ktorá nie je reťazcom, vyhodí výnimku. |
services.ip2location.key | null | IP2LOCATION_API_KEY | API kľúč IP2Location.io. |
services.ip2location.retry | 2 | IP2LOCATION_RETRY_TIMES | Počet opakovaní, 0 alebo viac. |
services.ip2location.retry_delay | 100 | IP2LOCATION_RETRY_DELAY_MS | Pauza medzi opakovaniami v ms, 0 alebo viac. |
services.maxmind_web.enabled | false | MAXMIND_WEB_ENABLED | Zapne poskytovateľa webovej služby MaxMind. |
services.maxmind_web.base_url | https://geoip.maxmind.com/geoip/v2.1 | MAXMIND_WEB_URL | Základná URL webovej služby. Prázdna hodnota sa považuje za nenastavenú (platí predvolená); hodnota, ktorá nie je reťazcom, vyhodí výnimku. |
services.maxmind_web.account_id | null | MAXMIND_ACCOUNT_ID | ID účtu MaxMind (používateľ HTTP Basic). |
services.maxmind_web.license_key | null | MAXMIND_LICENSE_KEY | Licenčný kľúč MaxMind (heslo HTTP Basic); withToken('maxmind_web', …) ho nahradí pre jedno volanie. |
services.maxmind_web.service | city | MAXMIND_WEB_SERVICE | city, country alebo insights; prázdna hodnota sa považuje za nenastavenú (city); iná hodnota vyhodí InvalidConfigurationException. |
services.maxmind_web.retry | 2 | MAXMIND_WEB_RETRY_TIMES | Počet opakovaní, 0 alebo viac. |
services.maxmind_web.retry_delay | 100 | MAXMIND_WEB_RETRY_DELAY_MS | Pauza medzi opakovaniami v ms, 0 alebo viac. |
services.maxmind_database.enabled | false | MAXMIND_DB_ENABLED | Zapne poskytovateľa lokálnej databázy .mmdb. |
services.maxmind_database.path | storage_path('app/geolocation/GeoLite2-City.mmdb') | MAXMIND_DB_PATH | Cesta k súboru .mmdb. |
services.maxmind_database.license_key | null | MAXMIND_LICENSE_KEY | Licenčný kľúč pre geolocation:db:update. |
services.maxmind_database.edition | GeoLite2-City | MAXMIND_DB_EDITION | Edícia, ktorú stiahne príkaz na aktualizáciu. Prázdna hodnota sa považuje za nenastavenú (platí predvolená); hodnota, ktorá nie je reťazcom, vyhodí výnimku. |
services.maxmind_database.download_url | https://download.maxmind.com/app/geoip_download | MAXMIND_DB_DOWNLOAD_URL | Základná URL na sťahovanie. Prázdna hodnota sa považuje za nenastavenú (platí predvolená); hodnota, ktorá nie je reťazcom, vyhodí výnimku. |
services.<provider>.rate_limits.* | pozri Obmedzenie požiadaviek | GEOLOCATION_<PROVIDER>_RATELIMIT* | Tempo odchádzajúcich požiadaviek pre google, ipinfo, ip2location a maxmind_web. |
Každý logický prepínač (cache.enabled, events.enabled, prepínače enabled oboch poskytovateľov MaxMind a kľúče enabled / adaptive v rate_limits) prijíma true/false, 1/0, on/off alebo yes/no, z .env aj z publikovaného súboru; nenastavený alebo prázdny prepínač má predvolenú hodnotu a čokoľvek iné (napríklad GEOLOCATION_CACHE=disabled) vyhodí pri prvom vyhľadávaní InvalidConfigurationException z package-toolkit s názvom kľúča.
Rovnako prísne sa číta každé ďalšie nastavenie. Celé číslo musí byť celé číslo (30 alebo „30“; five, 5.5 a 1e3 vyhodia výnimku, namiesto toho, aby sa zmenili na 0), reťazcové nastavenie musí byť reťazec a pevný slovník (per, services.maxmind_web.service) odmietne všetko mimo neho. Nenastavený kľúč — chýbajúci, null alebo prázdny (riadok KEY= v .env) — má predvolenú hodnotu (voliteľné max_wait / jitter zostanú vypnuté).
Prostredie (env)
Prístupové údaje sa čítajú z prostredia vašej aplikácie, takže nikdy nie sú v balíku ani vo verziovacom systéme. Typický produkčný .env:
GEOLOCATION_TIMEOUT=5
GEOLOCATION_CACHE=true
GEOLOCATION_CACHE_STORE=redis
GEOLOCATION_EVENTS=true
IPINFO_TOKEN=your-ipinfo-token
GOOGLE_MAPS_API_KEY=your-google-maps-key
IP2LOCATION_API_KEY=your-ip2location-key
MAXMIND_DB_ENABLED=true
MAXMIND_LICENSE_KEY=your-license-keyservices.maxmind_web.license_key aj services.maxmind_database.license_key čítajú MAXMIND_LICENSE_KEY, takže jeden kľúč pokryje webovú službu aj sťahovanie databázy.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.