Jak vytvořím úlohu cronu z panelu LWS?

Procédure

Co je úloha cron?

Úč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.

Jak vytvořím úlohu cronu?

Přistupte k nástroji Cron Task

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".

Jak vytvořím úlohu cronu z panelu LWS?

Konfigurace frekvence úlohy cron

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.

Jak vytvořím úlohu cronu z panelu LWS?

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).

Tipy / rady

  • S výjimkou velmi výjimečných případů nedoporučujeme nastavovat úlohu cronu tak, aby se spouštěla každou minutu, aby nedošlo k zahlcení serveru a tím ke snížení výkonu služby.
  • Dávejte přednost úlohám, které se spouštějí v noci a v určitý čas (například 3.47 ), abyste se vyhnuli spouštění úloh ve stejnou dobu jako případné automatické úlohy, jak to mohou dělat některé CMS nebo nástroje používané na vašem webu.

Konfigurace pole příkazů

Existují tři způsoby volání skriptu prostřednictvím nástroje Cron Task:

  • Volání PHP
  • Volání wget
  • Volání cURL

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&param2=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&param2=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 :

  • jednoduše spustit náš skript ve zvolených intervalech
  • spustit náš skript přidáním parametrů a ve zvolených intervalech

Vytvoření souboru protokolu

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.

Jak mohu spravovat úlohy cron?

Zobrazení vytvořených úloh cronu

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í.

Jak vytvořím úlohu cronu z panelu LWS?

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

Jak vytvořím úlohu cronu z panelu LWS?

Jak upravit úlohu cronu?

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".

Jak vytvořím úlohu cronu z panelu LWS?

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

crontab -e

Jak vytvořím úlohu cronu z panelu LWS?

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

Jak vytvořím úlohu cronu z panelu LWS?

Používání úloh Cron s Cloudflare DNS

Proč moje crony nefungují se službou CloudFlare?

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í.

Spuštění úlohy cron pomocí služby CloudFlare

Ú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:

  1. Vytvořte subdoménu (například: cron.domain.ext) z klientského prostoru podle této dokumentace.
  2. Umístěte soubor, který má být prováděn úlohou cron, do složky s názvem subdomény na FTP prostoru vašeho hostingu.
  3. Vytvořte svou úlohu cronu z klientského prostoru podle pokynů uvedených výše v této dokumentaci.
  4. Připojte se k účtu CloudFlare propojenému s názvem vaší domény.

V části "DNS" přidejte záznam CNAME, jak je uvedeno v následujícím příkladu:

Jak vytvořím úlohu cronu z panelu LWS?

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".

Závěr

Nyní již víte, jak : - Pochopit účel a fungování úlohy cron 🤖.

  • Konfigurovat a automaticky spouštět skripty pomocí úlohy LWS cron ⏱️.
  • Získat přístup k nástroji Cron Task a nakonfigurovat periodicitu ✅.
  • Použití různých metod volání (PHP, wget, cURL) pro vaše skripty 🌐.
  • Používání souborů protokolu ke sledování úloh cronu 📝
  • Správa, úprava a zobrazení vytvořených úloh cronu 🛠️
  • Používání úloh cron s Cloudflare DNS pro řešení problémů s během 🛡️

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ý ?

Article utileAno

Article non utileNe

MerciMerci ! N'hésitez pas à poser des questions sur nos documentations si vous souhaitez plus d'informations et nous aider à les améliorer.


Vous avez noté 0 étoile(s)

Podobné články

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?


Položte týmu LWS a jeho komunitě otázku