Cron skripty
Automatické úlohy spouštěné v definovaném časovém intervalu. Jednotlivé cron skripty jsou uloženy v adresáři app/cron.
Volání
Volání skriptu je možné z internetu pomocí URL routy CRON/{script}. Tyto URL jsou chráněny omezením přístupu dle IP adres.
Povolené IP adresy jsou definovány v .env:
ALLOWED_IP=127.0.0.1,::1,93.185.102.4,93.185.102.5
Příklad
Zavolání cron skriptu app/cron/purge-sessions.php:
http://localhost:8000/CRON/purge-sessions
Nebo přes command line:
./console sessions:purge
Bezpečnost
Spouštění je omezeno na:
- Vlastní server (127.0.0.1, ::1)
- Mediasolution servery
- Pevné IP adresy programátorů (definované v .env)
To zajišťuje, že cron skripty mohou být spuštěny pouze z důvěryhodných míst.
Struktura cron skriptů
Cron skripty jsou jednoduché PHP soubory v adresáři app/cron/:
<?php
declare(strict_types=1);
// Zde je logika cron skriptu
// Např. vymazání starých sessions, generování sitemapu, atd.
// Není třeba žádného výstupu, ale lze jej zapsat do logu
Integrace s CLI
Z CLI (Local) lze volat cron skripty přes console příkazy:
./console sessions:purge
Příslušný command soubor zavolá cron skript:
<?php
// @description Purge sessions
declare(strict_types=1);
require DIR . '/app/cron/purge-sessions.php';
Běžné cron úlohy
- delete-cache - Kompletní smazání mezipaměti
- indexing - Indexování webu pro vyhledávání
- purge-cache - Vymazání staré mezipaměti
- purge-sessions - Vymazání starých sessions
- sitemap - Generování sitemap
Nastavení v systému
Pro pravidelné spouštění je nutné nastavit cron job na serveru:
# Každých 5 minut
*/5 * * * * curl -s http://localhost:8000/CRON/purge-sessions
# Každou noc v 2 hodiny
0 2 * * * curl -s http://localhost:8000/CRON/sitemap
Nebo přes PHP-CLI:
# Každých 5 minut
*/5 * * * * /usr/bin/php /path/to/console sessions:purge
Monitoring
Lze přidat logování pro sledování spuštění cron skriptů:
<?php
declare(strict_types=1);
$start = time();
// ... logika ...
$duration = time() - $start;
Debugger::log("Cron script completed in {$duration} seconds");