Laravel - Automatizace procesů s CRONem a CRONTABem

  • před 5 měsíci
  • 5 min čtení
  • 939 počet slov

Úvod

Cron je užitečný nástroj pro plánování úkolů podle času v Unixových systémech, včetně distribuce Ubuntu. Jeho automatizační schopnosti jsou ideální pro efektivní správu údržbových operací v Laravel aplikacích. Tento blog přináší přehled o používání Cronu k plánování úloh ve vašem Laravel prostředí.

Potřebné věci

  • Linuxu (Ubuntu)
  • PHP
  • sudo oprávnění 

 

Cron - instalace

Většina Linuxových distribucí má cron nainstalovaný defaultně. Každopádně pokud Cron není ve vaší distribuci, lze ho přidat pomocí správce balíčků APT.

 

- aktualizace lokálních balíčku:

sudo apt update

 

- instalace cron pomocí příkazu:
sudo apt install cron

 

- Ujistěte se, že je spuštěný a běží v pozadí:
sudo systemctl enable cron

 

Output

Synchronizing state of cron.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable cron

 

Porozumění Funkcionalitě Cronu

Cron spravuje úkoly prostřednictvím speciálního souboru nazvaného crontab, který se nachází v /var/spool/cron/crontabs/. Každý uživatel může mít svůj vlastní crontab pro plánování úkolů. Cronový výraz se skládá z plánu a příkazu k provedení. 

 

🫳 Tabulka pro tvorbu časového intervalu:

Pole Povolené hodnoty
minuta 0-59
hodina 0-23
den v měsíci 1-31
měsíc 1-12 nebo JAN-DEC
den v týdnu 0-6 nebo SUN-SAT

 

🫳 Struktura:

minuta hodina den_v_měsíci měsíc den_v_týdnu příkaz_k_spouštění

 

🫳 Příklad:

Zde je příklad cronového výrazu pro spuštění příkazu curl https://www.ludwigtomas.cz/api/works, každé úterý v 17:30 :
30 17 * * 2 curl https://www.ludwigtomas.cz/api/works 

 

🫳 Cron nabízí zkrácené příkazy pro jednodušší plánování:

  • *: Představuje "všechno" v cronových výrazech.
  • ,: Odděluje hodnoty plánování pro vytvoření seznamu.
  • -: Specifikuje rozsah hodnot.
  • /: Vyjadřuje krok hodnoty.

 

🫳 Příklady zkrácených příkazů:

  • * * * * *: Spustit každou minutu.
  • 12 * * * *: Spustit 12 minut po každé hodině.
  • 0,15,30,45 * * * *: Spustit každých 15 minut.
  • */15 * * * *: Spustit každých 15 minut.
  • 0 4 * * *: Spustit každý den v 4:00 ráno.
  • 0 4 * * 2-4: Spustit každé úterý, středu a čtvrtek v 4:00 ráno.

 

Správa Cron Úkolů

Crontaby lze spravovat pomocí příkazu 'crontab'.

 

🫳 editace crontabu:

crontab -e

 

🫳 zobrazení obsahu crontabu:

crontab -l

 

🫳 smazání obsahu crontabu:

crontab -r

 

Realný příklad (Laravel command

Vytvoříme v Laravel aplikaci nový command, který bude výtvářet laravel.log soubor každý den v 17:00.

 

1️⃣. Vytvoření commandu:

php artisan make:command CreateLogCommand

 

2️⃣. Úprava commandu - otevřeme si CreateLogCommand.php a upravíme handle() funkci následovně:

<?php

namespace App\Console\Commands;

....

use Illuminate\Support\Facades\Log

....

 

public function handle()

{

    Log::channel('daily')->info('This is a daily log');

}

 

3️⃣. Umístění projektu v Ubuntu - Laravel + PHP

  • PHP        /usr/bin/php (defaultní umístění)
  • Laravel   /var/www/html

 

4️⃣. Nastavení crontabu - nastavíme 

- nejdříve si otevřeme crontab

crontab -e

 

- vytvoření příkazu

0 17 * * * php /var/www/html/artisan app:create-log-command >> /dev/null 2>&1

 

5️⃣. Rozbor příkazu

0 17 * * *                       - 17:00 každý den

/var/www/html/artisan     - cesta k artisan souboru v Laravel projektu

app:create-log-command   - název vytvořeného commandu, protected $signature= '.....';

 

Závěr

Využitím Cronu získáváte nekonečné možnosti automatizace v Laravel prostředí. Od odesílání databázových záloh až po aktualizace klientů emailem, Cron vám nabízí široké spektrum efektivních řešení. S tímto mocným nástrojem se údržba a správa úkolů ve vašich Laravel aplikacích stává jednodušší a produktivnější.

 

Pokud máte jakékoliv dotazy nebo připomínky, neváhejte mi napsat!

Pojďme se sejít !

📱 +420 730 681 670

✉ info@ludwigtomas.cz

🖥️ Web - Kontakty

Další informace

před 5 měsíci přidáno

61 počet návštěv

939 počet slov

5 minut čtení

Další nabízené blogy

Laravel Pulse | V produkci Pomocí Supervisora

před 1 měsícem

65

594

Laravel Pulse | V produkci Pomocí Supervisora

Laravel - Automatizace procesů s CRONem a CRONTABem

před 5 měsíci

61

939

Laravel - Automatizace procesů s CRONem a CRONTABem

Vue.js - Moderní javascriptový framework

před 7 měsíci

40

1370

Vue.js - Moderní javascriptový framework

VPS - Deploy Laravel 11 application on Ubuntu 24

před 7 měsíci

72

943

VPS - Deploy Laravel 11 application on Ubuntu 24