Vytvoření cronjobu nebo úlohy (a co dělat, pokud neběží)
Pomocí cron úlohy (v DirectAdmin: Cron Jobs) necháte skript automaticky spouštět v pevně daných časech, například každou noc. Níže se dozvíte, jak takovou úlohu vytvořit a co dělat, pokud nefunguje.
Pravidla pro cron úlohy
- U balíčků Webhost One a Webhost Two smí úloha spustit nejvýše jednou za 10 minut, a to pro všechny Vaše úlohy dohromady.
- U balíčků Power Webhost smí úlohy běžet častěji.
- Rozložte více cron úloh v čase a zvolte klidnější okamžik, například 03:17 místo přesně o půlnoci.
- Náročné cron úlohy, které dlouho zatěžují server, nejsou povoleny. Na stejném serveru běží další webové stránky. V případě potřeby takovou úlohu zastavíme. Udržujte proto své úlohy krátké a nespouštějte je častěji, než je nutné.
Vytvoření cron úlohy
- Přihlaste se do DirectAdmin a v sekci Pokročilé funkce klikněte na Cron Jobs.
- Klikněte na Vytvořit cron úlohu.
- Vyplňte minutu, hodinu, den, měsíc a den v týdnu. Minutu vždy zadejte jako číslo, ne hvězdičku, jinak se úloha spustí každou minutu.
- U příkazu zadejte celou cestu, například:
/usr/local/bin/php -q /home/uzivatel/domains/vasedomena.nl/public_html/uloha.php
Nahraďte uzivatel svým uživatelským jménem v DirectAdmin. - Klikněte na Vytvořit.

E-mail po každé cron úloze
Výstup cron úlohy se odesílá na výchozí e-mailový účet Vašeho balíčku, viz Výchozí e-mailový účet v DirectAdmin. Výstup můžete poslat i na vlastní adresu pomocí Odesílat veškerý výstup cronu na e-mail. Pokud e-mail nechcete dostávat, klikněte při vytváření na Nezasílat e-maily, nebo za příkaz vložte:
>/dev/null 2>&1
Pozor u PHP skriptů
Skript, který se spouští z cron úlohy, neví, pod jakou doménou běží. $_SERVER['SERVER_NAME'] a $_SERVER['DOCUMENT_ROOT'] jsou prázdné a include s relativní cestou může selhat. Proto na začátek skriptu vložte:
$cesta = '/home/uzivatel/domains/vasedomena.nl/public_html'; $_SERVER['SERVER_NAME'] = 'vasedomena.nl'; $_SERVER['DOCUMENT_ROOT'] = $cesta; set_include_path($cesta . PATH_SEPARATOR . get_include_path());
Cron úloha se nespouští?
Projděte si postupně tyto body:
- Přečtěte si výstup. Dočasně odstraňte
>/dev/null 2>&1a podívejte se do e-mailu na výchozím e-mailovém účtu, nebo si nastavte vlastní adresu. Tam často najdete přesně to, co se děje špatně. Výstup můžete také zapisovat do logovacího souboru tak, že za příkaz vložíte>> /home/uzivatel/cron-log.txt 2>&1. - Zkontrolujte cestu. Hláška Could not open input file znamená, že cesta ke skriptu není správná. Podívejte se do Správce souborů: cesta začíná na
/home/uzivatel/domains/. - Zkontrolujte verzi PHP. Při použití
/usr/local/bin/phpúloha používá stejnou verzi PHP jako Váš web. Pokud Váš skript funguje jen na jiné verzi, upravte ji v Select PHP version. - Otestujte příkaz ručně. Pokud máte balíček s Terminálem, vložte příkaz tam a sledujte, co se stane, viz Otevření SSH nebo Terminálu v DirectAdmin. Bez Terminálu otevřete skript v prohlížeči, nebo jej v cron úloze zavoláte pomocí
curl --silent https://www.vasedomena.nl/uloha.php. - Zkontrolujte oprávnění. Skript musí být čitelný: soubory by měly mít oprávnění 644 a složky 755. Viz Oprávnění souborů a složek (chmod).
- Zkontrolujte čas spuštění. Podívejte se u Spuštění úlohy:, zda úloha běží v okamžiku, kdy očekáváte. Pokud je u minuty hvězdička, úloha běží každou minutu a může být zastavena.
- Zkontrolujte limit balíčku. Pokud úloha běží častěji, než Váš balíček povoluje, nebo trvá příliš dlouho, bude přerušena. Rozdělte v takovém případě práci do více kol.
date >> /home/uzivatel/cron-log.txt;.Viz také v návodu k DirectAdmin: Výchozí e-mailový účet Vašeho balíčku.
Podrobné vysvětlení se snímky obrazovky: Cron Jobs: automatické spouštění úloh v návodu k DirectAdmin.
