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");
}
}
Ці умовні методи сповіщення забезпечують детальний контроль за моніторингом задач, дозволяючи вам вибірково сповіщати системи моніторингу залежно від середовища, часу або стану застосунку