---
title: "Inline kontroly cez closure — Alerts for Laravel | Roundly"
description: "Definujte jednorazové kontroly ako closures cez Health::define(), nastavte ich fluentne a plánujte či spúšťajte podľa kľúča."
url: https://roundly-consulting.com/sk/open-source/navody/alerts-for-laravel/inline-kontroly
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Alerts for Laravel](https://roundly-consulting.com/sk/open-source/navody/alerts-for-laravel.md)

# Inline kontroly cez closure

Na jednorazové kontroly nemusíte písať triedu — definujte ich inline:

```php
use Illuminate\Support\Facades\Redis;
use RoundlyConsulting\Alerts\CheckResult;
use RoundlyConsulting\Alerts\Facades\Health;

Health::define('redis-up', fn () => Redis::ping() ? CheckResult::ok() : CheckResult::failed('Redis down'))
    ->name('Redis')
    ->throttle(maxAttempts: 1, decayMinutes: 15)
    ->notifyUsing(RedisDownNotification::class);
```

Closure môže vrátiť CheckResult alebo obyčajný bool — true znamená ok, false failed. Dostane ClosureCheck, takže môže čítať meta naplánovaného riadka rovnako ako kontrola v triede. Closure pre notifikáciu dostane kontrolu a príjemcu:

```php
use RoundlyConsulting\Alerts\Checks\ClosureCheck;

// The closure receives the ClosureCheck; return a CheckResult or a plain bool.
Health::define('orders-flowing', function (ClosureCheck $check): bool {
    $minutes = $check->healthCheck?->meta['window'] ?? 60;

    return Order::where('created_at', '>=', now()->subMinutes($minutes))->exists();
})->name('Orders flowing');

// A notification closure receives the check and the recipient.
Health::define('queue-drained', fn () => Queue::size() < 100)
    ->notifyUsing(fn (ClosureCheck $check, object $notifiable) => new QueueStuckNotification($check->name()));
```

## Voľby buildera

Health::define() vracia PendingCheck:

| Metóda | Účinok |
| --- | --- |
| `name(string)` | Zobrazovaný názov. Bez neho sa každá inline kontrola volá „Closure Check“, preto ho nastavte. |
| `description(string)` | Popis, ktorý vracia register. |
| `notifyUsing(string\|Closure)` | Vaša notifikácia: trieda, ktorá dostane kontrolu v konštruktore, alebo closure, ktorá dostane kontrolu a príjemcu. |
| `tags(array)` | Vlastné tagy kontroly, zlúčené do efektívnych tagov každého riadka. |
| `failAfter(int)` | Počet po sebe idúcich zlyhaní, kým sa otvorí alert. |
| `recoverAfter(int)` | Počet po sebe idúcich úspechov, kým sa alert zatvorí. |
| `timeout(int $seconds)` | Časový limit pre closure. |
| `notifyVia(array, ?int $level)` | Kanály pribalenej notifikácie, globálne alebo pre eskalačnú úroveň. |
| `escalate(array)` | Eskalačná politika prah ⇒ skupina; každý prah je celé číslo aspoň 1. |
| `throttle(int, int)` | Limit opakovaných notifikácií pre riadky, ktoré kontrolu spúšťajú (pozri poznámky nižšie). |
| `uniqueBy(?array $metaKeys)` | Identita plánu: null (predvolené) vloží pri každom schedule() nový riadok, zoznam meta kľúčov namiesto toho aktualizuje existujúci plán (pozri Identita plánov a zmena nastavení). |

notifyUsing() s názvom triedy ju vytvorí s kontrolou ako jediným argumentom konštruktora. Ak trieda alebo closure nevytvorí Notification, použije sa pribalená HealthCheckFailedNotification.

## Plánovanie a spustenie

```php
// An inline check has no class — run it by its key. The throttle and
// options declared on define() apply:
Health::for($team)->run('redis-up');

// Monitor it by its key — the builder starts from define()'s options,
// and any builder call overrides them:
Health::for($team)->monitor('redis-up')
    ->everyMinute()
    ->failAfter(2)
    ->save();
```

Inline kontrola nemá triedu, preto ju spúšťate aj plánujete podľa kľúča. Health::for($owner)->run('kľúč') použije obmedzenie a voľby deklarované v define() a Health::for($owner)->monitor('kľúč') z nich začne — každé volanie buildera ich prepíše.

## Kde sa voľby uplatnia

- name(), description(), tags() a notifyUsing() patria samotnej kontrole a platia všade, kde beží.
- throttle(), failAfter(), recoverAfter(), timeout(), notifyVia() a escalate() platia pre riadok na požiadanie, cez ktorý Health::for($owner)->run() beží, keď vlastník kontrolu nemá naplánovanú. Tento riadok kopíruje definíciu, takže zmenené define() sa prejaví pri ďalšom behu.
- Riadok naplánovaný cez Health::for($owner)->monitor('kľúč') začne od rovnakých volieb a ponechá si to, čo sa uložilo — meňte ich v tomto builderi.
- Obmedzenie opakovaných notifikácií sa vždy číta zo stĺpcov max\_attempts a decay\_minutes riadka, ktoré pochádzajú z throttle() v define() alebo z buildera monitor().

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/alerts-for-laravel.md)
