Laravel 11: Představení seskupování plánů

Ú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 zave...

Poptat web

21. 11. 2024

Laravel 11: Představení seskupování plánů

Ú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í.

Původní článek publikoval Nabil Hassen.