Správné ošetření automaticky spouštěných skriptů

1. března 2017

Když je nějaký skript spouštěný automaticky cronem, může se stát spousta věcí:

  • dříve jednoduchý úkol se s časem zesložiťuje a dojde časový limit
  • dříve malá data narostou a dojde paměťový limit
  • dojde k výpadku serveru dodavatele dat
  • jeden z úkolů selže a proto se nepodaří dokončit ostatní

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 1234 bytes) in /foo.php on line 123

Fatal error: Maximum execution time of 30 seconds exceeded

Sestavil jsem si proto soupis několika způsobů ochrany, které lze dle potřeby kombinovat:

  • na začátku spuštění zapsat zámek a na konci ho smazat. Pokud na začátku spuštění zámek existuje, poslat e-mail.
  • kontrolovat počet zpracovaných položek, nastavit mezní hodnotu pro zaslání e-mailu.
  • u všech dotazů do databáze, používat limit/časovou podmínku - např. při pročišťování logu.
  • na úvodní stránce administrace uvádět poslední úspěšné spuštění, počet zpracovaných položek, dobu trvání a velikost dat. Nastavit mezní hodnoty pro zobrazení upozornění.

Dále je užitečné pamatovat na další věci:

  • importovaná data a případně kompletní výstup ukládat
  • prováděné akce logovat
  • a tyto po nějakou dobu archivovat

Štítky: cron, importy, logování


Přidat komentář: