Laravel - Automatizace procesů s CRONem a CRONTABem
- před 9 měsíci
- 5 min čtení
- 937 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!