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

Časové limity a chyby

Časový limit kontroly

timeout(5) obmedzí kontrolu na päť sekúnd:

Health::for($team)->monitor(PaymentGatewayCheck::class)
    ->everyMinute()
    ->timeout(5)   // hard abort under CLI with ext-pcntl, post-hoc report elsewhere
    ->save();

V CLI s ext-pcntl — vrátane queue workerov — sa kontrola po uplynutí limitu okamžite preruší cez SIGALRM. Inde (webové SAPI, Windows) ide o dodatočné vyhodnotenie: kontrola dobehne a ak limit prekročila, označí sa ako failed. Kontrola, ktorej vypršal čas, prejde bežnou cestou výsledku failed s výnimkou CheckTimedOut v meta a s údajom timed_out_after.

V queue workeri sa vlastný alarm jobu z --timeout zachová: limit kontroly dlhší než čas, ktorý jobu zostáva, ho nikdy nepredĺži, a alarm workera sa po kontrole znova nastaví.

Kontroly odolné voči výnimkám

check() nikdy nepotrebuje try/catch. Akákoľvek vyhodená výnimka sa zmení na čistý výsledok failed a zapíše sa ako bežný alert a beh, takže chybná kontrola nikdy neskončí zlyhaním jobu vo fronte. Správa výnimky môže byť obrovská — QueryException obsahuje celé SQL —, preto riadky behov a alertov uložia najviac CheckResult::MAX_STORED_MESSAGE_LENGTH (1000) znakov; úplný text zostane vo vrátenom výsledku a v meta['exception_message']:

Health::define('flaky', function () {
    throw new RuntimeException('upstream exploded'); // becomes CheckResult::failed()
});

// Or build a result from a caught exception yourself:
CheckResult::fromException($e); // status failed, exception class + bounded trace in meta
$alert = $team->alerts()->open()->first();

$alert->message;                    // stored up to CheckResult::MAX_STORED_MESSAGE_LENGTH (1000) characters
$alert->meta['exception'];          // e.g. 'RuntimeException'
$alert->meta['exception_message'];  // 'upstream exploded' — the full text, never shortened
$alert->meta['exception_trace'];    // the first 15 stack frames
$alert->meta['timed_out_after'];    // seconds — present only for timeouts

Chránená je len samotná metóda check(). Získanie kontroly (neregistrovaný kľúč) alebo vlastníka (bez HasNotifiablesForAlerts) naďalej vyhodí výnimku a job zlyhá — ide o chyby konfigurácie, o ktorých chcete vedieť.

Výnimky

Všetky sú v RoundlyConsulting\Alerts\Exceptions, okrem výnimky z toolkitu:

VýnimkaKedy nastane
CheckTimedOutKontrola prekročí svoj timeout(). Beh ju zachytí a uloží ako výsledok failed — nikdy neunikne. Nesie verejné vlastnosti key a seconds.
InvalidCronExpressionmalformed(): plán sa ukladá — cez monitor()->save(), schedule() alebo skratky traitu — s výrazom, ktorý nie je platný 5-poľový cron ani podporovaný alias; nič sa neuloží. skipped(): runDue() narazil na uložený riadok, ktorý nevie vyhodnotiť (zapísaný seederom alebo ručne) — výnimka sa nevyhodí, ale nahlási vášmu exception handleru a riadky za ním sa odošlú ďalej.
InvalidHealthCheckdoesntExtendBaseCheck(): registrujete, spúšťate alebo plánujete triedu, ktorá nerozširuje Check. notRegistered(): naplánovaný riadok odkazuje na kľúč — alebo run() dostane kľúč —, ktorý v bežiacom procese nie je registrovaný. ambiguous(): run() dostane triedu registrovanú cez as() pod viacerými kľúčmi — spustite ju podľa kľúča. notScheduledFor(): Health::for($owner)->run() alebo unmonitor() dostane riadok, ktorý patrí inému vlastníkovi.
InvalidNotifiableForHealthCheckVlastník riadka neimplementuje HasNotifiablesForAlerts alebo už neexistuje.
InvalidConfigurationExceptionZ package-toolkit: hodnota v konfigurácii je neplatná — kľúč modelu, ktorý nie je model z balíka ani jeho podtrieda, neznámy key_type, prepínač, ktorý nie je boolean, neznáma schedule.frequency, route.uri alebo route.name, ktoré nie je reťazcom, alebo history.retention_days, ktoré nie je celé číslo aspoň 1. Správa uvádza názov kľúča.

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.