NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

Chybové odpovede poskytovateľov ani nedostupné API vyhľadávanie neukončia — počítajú sa ako minutie a pipeline pokračuje. Balík vyhadzuje výnimky pri problémoch s konfiguráciou (neznámy poskytovateľ, chýbajúca či poškodená databáza MaxMind), neplatnom vstupe, neúspešnej obnove databázy a voliteľnom strope limitu požiadaviek. Všetky sú v RoundlyConsulting\Geolocation\Exceptions:

VýnimkaKedy sa vyhodí
GeolocationExceptionAbstraktný základ (RuntimeException) — zachytením ošetríte všetko nižšie.
UnknownProviderExceptionMeno v using(), provider(), withToken() alebo withConfig() nie je v mape providers ani registrované cez extend(), alebo položka v providers nemá meno.
ProviderUnavailableExceptionPribalený HTTP poskytovateľ sa nedostane k svojmu API (timeout, zlyhanie DNS, odmietnuté spojenie). Manažér ju zachytí a opýta sa ďalšieho poskytovateľa; uvidíte ju ako error v LocationResolutionFailed. Nesie ->provider; správa neobsahuje prístupové údaje.
DatabaseUpdateExceptionupdateDatabase() alebo geolocation:db:update nemá licenčný kľúč či cestu, sťahovanie zlyhá (chyba HTTP, timeout, nedostupný server) alebo sa archív nedá rozbaliť. Licenčný kľúč sa zo správy odstráni.
InvalidCoordinatesExceptionŠírka mimo [-90, 90], dĺžka mimo [-180, 180] alebo iná hodnota ako Coordinates priradená castu.
DatabaseNotFoundExceptionPoskytovateľ databázy MaxMind je zapnutý, ale súbor .mmdb chýba, nedá sa čítať alebo nie je nastavená cesta.
InvalidDatabaseExceptionSúbor .mmdb je poškodený — chýbajú metadáta, je skrátený, chybný alebo má nepodporovanú veľkosť záznamu.
RateLimitExceededExceptionLimiter poskytovateľa by čakal dlhšie ako max_wait. Nesie ->provider a ->retryAfterSeconds().

Chybná hodnota v konfigurácii — preklep v prepínači, timeout, ktorý nie je celé číslo, neznáme okno limitu — namiesto toho vyhodí InvalidConfigurationException z package-toolkit (RoundlyConsulting\PackageToolkit\Exceptions) s názvom kľúča. Nie je to GeolocationException, takže zachytenie GeolocationException nesprávnu konfiguráciu nikdy neskryje.

Zlyhanie spojenia

Keď poskytovateľ vôbec nie je dostupný — timeout, zlyhanie DNS, odmietnuté spojenie —, HTTP klient Laravelu zopakuje pokus podľa nastavení poskytovateľa, potom poskytovateľ vyhodí ProviderUnavailableException a manažér prejde na ďalšieho poskytovateľa. Ak neodpovie nikto, vyhľadávanie vráti null a LocationResolutionFailed uvedie posledného nedostupného poskytovateľa a jeho chybu. distance() nedostupného poskytovateľa preskočí rovnako a distanceMatrix() zmení každú bunku na null.

API kľúče ani licenčný kľúč MaxMind sa v správach výnimiek nikdy neobjavia: sú odstránené a výnimka prenosu — jej správa cituje celú URL požiadavky — sa nepripája ako previous.

Zachyťte GeolocationException a ošetríte všetko na jednom mieste:

use RoundlyConsulting\Geolocation\Exceptions\GeolocationException;

try {
    $location = Geolocation::locateRequest();
} catch (GeolocationException $e) {
    report($e);   // missing or corrupt .mmdb, rate-limit ceiling, unknown provider...
    $location = null;
}

batch() výnimky zachytáva sám po položkách a pre danú IP ich mení na null.

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 kryptomien

Odoslaní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.