Úvod
Nedávný přírůstek v Laravelu 11, jehož autorem je Istiak Tridip is Plánování seskupení. Výkonný způsob organizované a intuitivní správy naplánovaných úkolů.
Problém
Před zavedením této funkce vyžadovala správa více naplánovaných úloh se společnými vlastnostmi opakovanou konfiguraci. Například pokud bylo třeba, aby se několik úloh spouštělo každou minutu nebo na pozadí, museli vývojáři tyto atributy zadávat pro každou úlohu zvlášť, což vedlo k nadbytečnému a hůře udržovatelnému kódu.
Schedule::command('command-one')->everyMinute()->runInBackground()->withoutOverlapping();Schedule::command('command-two')->everyMinute()->runInBackground()->withoutOverlapping();Schedule::command('command-three')->everyMinute()->runInBackground()->withoutOverlapping();
Řešení
Nová funkce seskupování rozvrhů zavádí syntaxi podobnou syntaxi příkazu Route::group umožňující vývojářům seskupovat související úlohy se sdílenými konfiguracemi. Použití nové group můžete definovat běžné atributy jako např. ->everyMinute() or ->runInBackground() jednou pro skupinu a použít je na všechny úkoly v rámci skupiny.
Zde je příklad, jak to funguje:
Schedule::group() ->everyMinute() ->runInBackground() ->withoutOverlapping() ->schedules(function () { Schedule::command('command-one'); Schedule::command('command-two'); Schedule::command('command-three'); });
Můžete dokonce vnořit skupiny:
Schedule::group() ->runInBackground() ->withoutOverlapping() ->schedules(function () { Schedule::group()->everyMinute()->schedules(function () { Schedule::command('command-one'); Schedule::command('command-two'); }); Schedule::group()->everyTenMinutes()->schedules(function () { Schedule::command('command-three'); Schedule::command('command-four'); }); });
Podle potřeby můžete také přepsat konfigurace konkrétních plánů:
Schedule::group() ->everyMinute() ->runInBackground() ->withoutOverlapping() ->schedules(function () { Schedule::command('command-one'); Schedule::command('command-two'); // Override the group's cron expression Schedule::command('command-three')->everyTenMinutes(); });
Tento přístup výrazně zlepšuje čitelnost kódu a odstraňuje redundanci.
Podporované verze Laravelu
Tato funkce je oficiálně podporována od Laravel 11.
Závěr
Seskupování plánů mění pravidla hry pro vývojáře, kteří spravují složité požadavky na plánování. Omezením šablonovitého kódu a zlepšením čitelnosti je příkladem snahy Laravelu o vývojářsky přívětivé funkce.
Prozkoumejte tuto a další funkce v Laravel 11 a zefektivněte svůj vývoj aplikací.
Další podrobnosti naleznete v žádost o stažení.