Task Scheduler у Laravel пропонує елегантне рішення для управління автоматизованими процесами у вашій програмі. Ця потужна система замінює традиційне управління cron-роботами, надаючи виразний і програматичний підхід до автоматизації повторюваних завдань.
Запланування завдань розпочинається у файлі вашого додатка app/Console/Kernel.php. Ось як налаштувати автоматизовані завдання:
protected function schedule(Schedule $schedule)
{
$schedule->command('reports:generate-monthly')
->monthly()
->firstDayOfMonth()
->at('09:00')
->timezone('Europe/London');
}
Ця конфігурація виконує команду генерації щомісячного звіту в перший день кожного місяця о 9:00 за лондонським часом.
Laravel надає різноманітні варіанти запуску для різних потреб автоматизації:
$schedule->command('cache:clear')->everyFiveMinutes();
$schedule->command('backup:create')->dailyAt('02:00');
$schedule->command('analytics:process')->weekly()->sundays();
$schedule->command('maintenance:check')->weekdays()->hourlyAt(30);
$schedule->command('logs:cleanup')->monthlyOn(15, '03:00');
Для складніших потреб ви можете використовувати cron-вирази:
$schedule->command('custom:process')->cron('*/15 * * * *'); // Кожні 15 хвилин
Ви можете ефективно контролювати результати виконання завдань:
$schedule->command('data:import')
->daily()
->appendOutputTo(storage_path('logs/imports.log'))
->emailOutputOnFailure('ops@company.com');
Цей підхід фіксує всі активності імпорту та надсилає сповіщення лише у разі збоїв.
Запобігання конфліктам ресурсів і забезпечення правильної координації завдань стає простим завдяки контролю виконання в Laravel:
$schedule->command('processing:heavy')
->daily()
->withoutOverlapping(30);
Для розподілених систем ви можете забезпечити виконання на одному сервері:
$schedule->command('sync:external-data')
->hourly()
->onOneServer()
->runInBackground();
Завдання можна налаштувати на виконання лише в необхідних середовищах:
$schedule->command('notifications:send')
->daily()
->environments(['production', 'staging'])
->evenInMaintenanceMode();
Ось комплексна служба планування, що ілюструє практичні шаблони автоматизації:
class AutomationScheduler
{
public function configureSchedules(Schedule $schedule)
{
$this->setupDatabaseMaintenance($schedule);
$this->configureReportGeneration($schedule);
$this->scheduleHealthChecks($schedule);
$this->manageFileCleanup($schedule);
}
private function setupDatabaseMaintenance(Schedule $schedule)
{
$schedule->command('model:prune')
->daily()
->at('01:00')
->onOneServer()
->before(function () {
Log::info('Початок очищення бази даних');
})
->after(function () {
Log::info('Очищення бази даних завершено');
});
}
private function configureReportGeneration(Schedule $schedule)
{
$schedule->command('reports:daily-summary')
->dailyAt('08:00')
->weekdays()
->timezone('America/New_York')
->when(function () {
return Config::get('reports.enabled');
});
$schedule->command('reports:weekly-analytics')
->weekly()
->mondays()
->at('07:00')
->sendOutputTo(storage_path('logs/weekly-reports.log'));
}
private function scheduleHealthChecks(Schedule $schedule)
{
$schedule->call(function () {
$this->performSystemHealthCheck();
})
->everyTenMinutes()
->runInBackground()
->pingOnFailure('https://monitoring.service.com/alert');
}
private function manageFileCleanup(Schedule $schedule)
{
$schedule->command('storage:cleanup')
->daily()
->at('03:00')
->unlessBetween('08:00', '18:00')
->environments(['production']);
}
}
Ви можете реалізувати складний контроль робочого процесу з використанням хуків перед і після виконання:
$schedule->command('data:sync')
->hourly()
->before(function () {
Cache::put('sync_started', now());
})
->onSuccess(function () {
Cache::forget('sync_started');
Cache::put('last_sync', now());
})
->onFailure(function () {
Cache::put('sync_failed', now());
});
Scheduler у Laravel безпечно інтегрується з зовнішніми службами моніторингу:
$schedule->command('critical:backup')
->daily()
->at('23:00')
->pingBefore('https://beats.service.com/start/backup-xyz')
->thenPing('https://beats.service.com/complete/backup-xyz');
Task Scheduler у Laravel перетворює автоматизацію програми з ручного управління cron на елегантну, зручну систему, що безперешкодно інтегрується з вашою логікою програми та інфраструктурою моніторингу
У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту
Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом
Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!