Ohodnotit tento článek :
3/5 | 1 názor
Tento článek byl pro vás užitečný ?
Ano
Ne
Vous avez noté 0 étoile(s)
Sommaire
Procédure
Účelem úlohy cron je automatické spouštění skriptu, příkazu nebo programu v nastaveném čase.
Pomocí"LWS cron job" můžete naplánovat spuštění skriptu na vašem webu v různých časech. Například jednou týdně, jednou denně, 8. den v měsíci atd.
Cron je velmi užitečný nástroj pro správce systému k automatizaci různých úloh, jako je zálohování dat, aktualizace softwaru,odesílání e-mailů atd.
Na tyto úlohy se vztahuje časový limit 240 s, což znamená, že pokud spuštění vašeho skriptu trvá déle než 4 minuty, bude po 4 minutách automaticky ukončen.
Nejprve se musíte přihlásit ke svému účtu LWS a získat přístup ke sdílenému hostingu, pro který chcete vytvořit úlohu cronu.
Po vstupu do správy služby vyhledejte blok"Databáze a PHP" a klikněte na"Cron tasks".

První věc, kterou je třeba pro úlohu cron nakonfigurovat, je její periodicita.
Na této úrovni nabízí LWS ve svém nástroji přednastavení, takže ji můžete nakonfigurovat na 1 kliknutí.
K tomu stačí použít první seznam v horní části formuláře a vybrat jeden z nabízených parametrů. Tím se automaticky vyplní pole tak, aby odpovídala periodicitě uvedené ve vybraném seznamu.

Pokud periodicita, kterou chcete nastavit, není v tomto prvním seznamu navržena, nezoufejte, můžeme nakonfigurovat každý prvek.
Pro každý prvek (minuty, hodiny, dny atd.) můžete buď zadat hodnoty ručně, nebo použít pole seznamu vpravo od každého pole.
Pokud tedy například chci, aby můj úkol začínal každý den ve 12:27, stačí v seznamu připojeném k poli minut vybrat číslo 27 a v seznamu připojeném k poli hodin vybrat 12:00 (poledne).
Existují tři způsoby volání skriptu prostřednictvím nástroje Cron Task:
Rozdíl mezi těmito třemi možnostmi spočívá především ve způsobu, jakým váš skript spustí.
Volání Wget nebo Curl používá protokol HTTP, což znamená, že se na něj vztahují konfigurace a omezení Apache, například časový limit, který může být relativně krátký.
Naproti tomuvolání PHP bude bez omezení, o kterých jsme hovořili u ostatních dvou metod. Představte si volání PHP jako průchod přes spojení SSH.
Možná vás tedy napadne, kterou metodu zvolit pro nastavení úlohy Cron. Naše odpověď zní, že pro základní skripty, které se spouštějí rychle, neexistují žádné skutečné rozdíly. Pokud je však vaše úloha CRON poměrně rozsáhlá, s velkým počtem prováděných akcí, a tedy s poněkud delší dobou provádění, bude nejvhodnější metodouvolání PHP. Na rozdíl od Curl nebo Wget bude časový limit delší (4 min).
Podíváme se, jak nastavit úlohu cronu pro každé z výše uvedených volání. Jako příklad si vezmeme jednoduchý web volající kořenový skript.
Volání cURL
Při volání curl pomocí protokolu HTTP jednoduše zavoláme adresu URL našeho souboru následujícím způsobem
curl -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /dev/null
Můžeme také potřebovat poslat našemu skriptu parametry. K tomu je jednoduše přidáme následujícím způsobem:
curl -d "param1=hodnota1¶m2=hodnota2" -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /dev/null
To nám umožní načíst tyto hodnoty parametrů v kódu našeho POST skriptu.
| Možnost | Role |
|---|---|
-s |
Tichý režim (bez ukazatele průběhu). |
-H "Cache-Control: no-cache" |
Vynutí no-cache na straně serveru. |
> /dev/null |
Přesměruje výstup tak, aby se nic neukládalo. |
Volání Wget
Při volání Wget, které rovněž používá protokol HTTP, stejně jako při volání cURL, budeme také volat adresu URL našeho skriptu. Tím získáme :
wget --no-cache --output-document=/dev/null --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php"
Pokud budeme potřebovat skriptu předat parametry, nezbude nám s Wgetem nic jiného než předat parametry v GET. Zde je návod, jak napsat příkaz :
wget --no-cache --output-document=/dev/null --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php?param1=value1¶m2=value2"
Ve skriptu můžeme tyto dva parametry načíst v GET.
| Možnost | Role |
|---|---|
--no-cache |
Zamezí použití mezipaměti (užitečné u některých proxy serverů). |
--output-document=/dev/null |
Neukládá nic lokálně. |
--header="Cache-Control: no-cache" |
Odešle hlavičku HTTP, aby se zabránilo ukládání do mezipaměti na straně serveru. |
Volání PHP
V případě jednoduchého webu si představme, že soubor obsahující můj skript se jmenuje cron.php.
Stačí zadat následující příkaz do nástroje Cron Task:
php /htdocs/cron.php
Zde bude verze PHP použitá pro spuštění skriptu ve výchozím nastavení 8.0.
Pokud si přejete použít konkrétní verzi PHP, stačí volání mírně upravit. Pokud například chcete ke spuštění skriptu použít verzi 7.2, je tento příkaz nazván :
php72 /htdocs/cron.php
Můžeme také potřebovat předat argument, který pak bude použit v našem skriptu.
Představme si například, že cílem našeho skriptu je odeslat e-mail na základě námi definovaného kritéria, například narozenin. Můžeme tedy chtít toto kritérium předat ve volání. Zde je návod, jak to provést prostřednictvím příkazového řádku :
php72 /htdocs/cron.php type=anniversary
Speciální případy
Existují také speciální případy v závislosti na tom, co používáte pro své stránky.
Například v případě webu vytvořeného pomocí frameworku Cakephp bude konfigurace úlohy CRON trochu odlišná, protože se bude provádět prostřednictvím příkazu SHELL volaného systémem frameworku.
Představme si, že máme web elektronického obchodu vytvořený pomocí frameworku Cakephp a chceme nastavit skript, který zašle e-mail nejlepšímu zákazníkovi s nabídkou propagačního kódu.
Vytvoříme příkaz Cake, který nazveme SendCP a který bude obsahovat skript spravující to, co chceme provést. Zde je uvedeno, jak budeme konfigurovat úlohu Cron :
php72 /htdocs/Console/cake.php SendCP
Uvádět příklady jednotlivých případů by bylo na dlouho, ale s tím, co zde bylo uvedeno, již máte dobrý základ pro používání nástroje úlohy Cron.
Pomocí různých příkladů nyní víme, jak zapsat náš příkaz do :
Nyní se podíváme na to, jak vytvořit soubor protokolu, abychom viděli, co se stalo během skriptu vyvolaného programem Cron.
K tomu použijeme níže uvedený příklad našeho skriptu CRON.
Příklad funkce echo jazyka PHP pro soubor protokolu
<?php /* Abyste se nemuseli starat o ukládání do mezipaměti */ header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: */ /* PHP_EOL umožňuje vynechat řádek v souboru */ echo date('Y/m/d h:i:s').PHP_EOL; /* Do souboru protokolu zapište následující větu */ echo 'Záznam mého Cronu'.PHP_EOL.PHP_EOL; ?>
Vykreslení souboru protokolu po spuštění skriptu prostřednictvím úlohy Cron
2023/01/19 02:57:01 Nahrávání mého Cronu 2023/01/19 03:57:01 Nahrávání mého Cronu 2023/01/19 04:57:01 Nahrávání mého Cronu 2023/01/19 05:57:01 Nahrávání mého Cronu 2023/01/19 06:57:01 Nahrávání mého Cronu 2023/01/19 07:57:01 Nahrávání mého Cronu 2023/01/19 08:57:01 Nahrávání mého Cronu
To, co budete do logovacího souboru zapisovat, bude tedy záležet na vás a na tom, co chcete ve svém skriptu sledovat. Může to být například seznam akcí s výsledkem každé z nich.
Příklad volání cURL s návratem do souboru protokolu
Pro volání cURL je zde uveden příkaz, který je třeba zadat do pole "Command":
curl -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /htdocs/logs/cron_curl.log 2>&1
V tomto příkladu se provede zpětný zápis (echo PHP) do souboru cron_curl.log ve složce logs. Pokud tento soubor nebo složka neexistuje, vytvoří se automaticky.
| Možnost | Role |
|---|---|
-s |
Tichý režim (bez ukazatele průběhu). |
-H "Cache-Control: no-cache" |
Vynutí no-cache na straně serveru. |
> /htdocs/logs/cron_curl.log |
Přesměruje standardní výstup (stdout) do souboru cron_curl.log. |
| 2>&1 | také přesměruje chyby (stderr) do stejného souboru. |
Příklad volání wget s návratem do souboru protokolu
Pro volání Wget použijte tento příkaz:
wget -O - -q --no-cache --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /htdocs/logs/cron_wget.log 2>&1
V tomto příkladu bude zpětná vazba při zápisu (echo PHP) odeslána do souboru cron_wget.log ve složce logs. Pokud tento soubor nebo složka neexistuje, vytvoří se automaticky.
| Možnost | Role |
|---|---|
--no-cache |
Zamezí použití mezipaměti (užitečné u některých proxy serverů). |
--header="Cache-Control: no-cache" |
Odešle hlavičku HTTP, aby se zabránilo ukládání do mezipaměti na straně serveru. |
| --post-data="..." | Přidá vlastní hlavičku HTTP. |
> /htdocs/logs/cron_wget.log |
přesměruje standardní výstup (stdout) do souboru cron_wget.log. |
| 2>&1 | také přesměruje chyby (stderr) do stejného souboru. |
Příklad volání PHP s návratem do souboru protokolu
Pro volání PHO se použije tento příkaz:
php72 /htdocs/cron.php >> /htdocs/logs/cron_php.log
V tomto příkladu bude zpětná vazba pro zápis (echo PHP) odeslána do souboru cron_php.log ve složce logs. Pokud tento soubor nebo složka neexistuje, vytvoří se automaticky.
Jakmile vytvoříte své úlohy cronu, můžete je najít přímo ve výpisu, který se zobrazí pod formulářem pro přidání.

Zde najdete seznam se zaznamenaným příkazem, periodicitou a možností úlohu cronu odstranit nebo pozastavit.

Pokud máte balíček LWS Starter nebo vyšší, můžete úlohu cronu pro svůj balíček upravit prostřednictvím webového terminálu přístupného z administrace balíčku.
Za tímto účelem se připojte ke svému hostingu a přistupte ke sdílenému hostingu, pro který chcete cronovou úlohu upravit.
V sekci " Software" klikněte na položku"Terminal".

Přistupte k souboru cron pomocí následujícího příkazu:
crontab -e

Po vstupu do souboru cron projděte soubor s úlohou, kterou chcete upravit. Každý řádek v souboru představuje samostatnou úlohu. Poté úlohu cronu upravte a dbejte na to, aby syntaxe zůstala správná. Poté ji uložte pomocí klávesové zkratky [CTRL] +X a poté"Y". Poté stiskněte klávesu [Enter].
Zda byla úloha cron správně upravena, můžete poté zkontrolovat pomocí následujícího příkazu:
crontab -l

Propojili jste svou doménu se službou CloudFlare pomocí jejího DNS a chcete v přidružené sekci v zákaznické oblasti nakonfigurovat úlohu cronu, ale úloha se provede pouze jednou, aniž by se opakovala v požadovaném časovém intervalu. Tento problém je známý, CloudFlare blokuje provádění cronů odeslaných z našich služeb. Chcete-li tento problém překonat, nabízíme vám řešení.
Úlohy cronu nakonfigurované ze zákaznické oblasti nefungují, pokud používáte službu CloudFlare DNS. Chcete-li tento problém překonat, postupujte podle tohoto postupu:
V části "DNS" přidejte záznam CNAME, jak je uvedeno v následujícím příkladu:

Nahraďte"cron" názvem své subdomény a"domain.ext" názvem své domény.
Ujistěte se, že je obláček šedý a nikoli oranžový. Tím sdělíte společnosti CloudFlare, že pro tuto subdoménu nechcete používat její služby.
Poté můžete kliknout na tlačítko"Přidat záznam".
Nyní již víte, jak : - Pochopit účel a fungování úlohy cron 🤖.
Doufáme, že vám tento článek poskytl všechny klíče k ovládnutí úloh cron a k efektivní automatizaci systémových úloh.
Pokud máte nějaké dotazy, připomínky nebo tipy, o které se chcete podělit, neváhejte je zanechat jako komentář. Děkujeme za přečtení a brzy se uvidíme u dalších praktických rad! 🙏💬
Ohodnotit tento článek :
3/5 | 1 názor
Tento článek byl pro vás užitečný ?
Ano
Ne
0mn čtení
Multidoména - Umístění několika domén na stejnou webhostingovou službu
1mn čtení
Je možné odstranit antispamovou funkci RSpamD na sdíleném hostingu?
0mn čtení
Jak mohu zobrazit e-maily odeslané pomocí funkce PHP mail a zablokované pomocí SPAMASSASSIN?