Використання умовних методів Ping у Laravel для моніторингу завдань

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 21 березня, 2025
Laravel пропонує потужні методи умовного моніторингу для планувальника, що дозволяє вибірково контролювати заплановані завдання вашого застосунку. Ознайомтеся, як ці нові функції можуть значно покращити контроль за виконанням ваших задач у статті!

Laravel впроваджує потужні умовні методи пінгування для планувальника, які дозволяють вам вибірково контролювати заплановані задачі у вашому застосунку. Ці методи надають гнучкі можливості для сповіщення, залежно від ваших конкретних умов.

Ось базовий приклад, як можна умовно сповіщати служби моніторингу:

Schedule::command('backup:run')->hourly()
    ->pingBeforeIf($condition, $url . '/starting')
    ->pingOnSuccessIf($condition, $url . '/finished')
    ->pingOnFailureIf($condition, $url . '/failed');

Далі наведено приклад налаштування моніторингу, специфічного для середовища, у складному застосунку:

class ApplicationScheduler
{
    public function configure()
    {
        // Визначення середовища
        $isProd = app()->environment('production');
        $isDev = app()->environment('development', 'local');
        $monitoringUrl = config('services.monitoring.url');
 
        // Синхронізація даних клієнтів
        Schedule::job(new SyncCustomerData)
            ->dailyAt('03:30')
            ->pingBeforeIf($isProd, "{$monitoringUrl}/sync/customers/start")
            ->pingOnSuccessIf($isProd, "{$monitoringUrl}/sync/customers/success")
            ->pingOnFailureIf($isProd || $isDev, "{$monitoringUrl}/sync/customers/error");
 
        // Обробка аналітики
        Schedule::command('analytics:process')
            ->hourlyAt(15)
            ->pingBeforeIf($isProd && now()->isWeekday(), "{$monitoringUrl}/analytics/start")
            ->pingOnSuccessIf($isProd && now()->isWeekday(), "{$monitoringUrl}/analytics/complete")
            ->pingOnFailureIf(true, "{$monitoringUrl}/analytics/failed");
 
        // Перевірка стану системи
        Schedule::command('system:health-check')
            ->everyFiveMinutes()
            ->pingOnFailureIf(true, "{$monitoringUrl}/system/health-check-failed");
    }
}

Ці умовні методи сповіщення забезпечують детальний контроль за моніторингом задач, дозволяючи вам вибірково сповіщати системи моніторингу залежно від середовища, часу або стану застосунку