WordPress Cron a Cron úloha – jaké jsou rozdíly?

Každý, kdo vlastní e-shop na WordPressu, se dostane do situace, kdy bude muset řešit spouštění úloh v pravidelném intervalu.

Typickým příkladem, je generování XML souboru pro Google Merchants, nebo jiné srovnávače. V souboru potřebujete mít neustále aktuální informace o zboží a skladu.

V případě, že vám někdo naprogramuje plugin, nebo jej zakoupíte, můžete se setkat s výrazem „CRON“.

Musíte však vědět, zda to je Cron, nebo WP Cron, protože se od sebe dost liší. 

 

Rozdíly mezi Cronem a WP Cronem

Cron je naplánovaná úloha na vašem serveru, většinou se tedy nastavuje na hostingu, který máte pro web.

Nastavení cron úlohy na vašem serveru je u většiny hostingů možné v administraci, jako například u WP Hosting.cz, kde si nastavíte url adresy, jenž chcete spouštět a v jakém intervalu.

Screeny z nastavení cronu:

Jak můžete vidět, server v určených intervalech načte url adresu a díky tomu se provedou všechny funkce, které script na adrese obsahuje.

Takto je řešena aktualizace například feedů pro Heuréku u pluginu od Toret.cz.

Oproti tomu WP Cron jsou akce a funkce, jenž se provádějí při načítání WordPressu. Nezáleží na tom, zda jste v administraci, nebo na webu, pokaždé, když se web načítá, dochází ke kontrole úloh pro WP Cron.

Ty se pak zkontrolují, zda jsou aktuálně načasované a provedou se.

Znamená to, že pokud máte web s nižší návštěvností a jsou naplánovány úlohy na půlnoc, je možné, že nebude žádná návštěva a první návštěvník to ráno prostě odskáče. Web to může výrazně zbrzdit. Na druhou stranu, méně náročné úlohy, jako jsou třeba kontroly verzí pluginů, web výrazně neomezí.

Použití Cronu nebo WP Cronu je třeba promyslet, ale já osobně, pokud mohu, používám pouze cron nastavená na hostingu.

V další části článku si již budeme popisovat pouze WP Cron, takže pro zjednodušení používám název Cron i pro úlohy WP Cronu.

Plánování události ve WP Cronu

Chování WordPress Cronu se dá rozdělit do dvou typů:

  • jednorázové úkoly – úloha se provede a pokud ji znovu nenaplánujete, již se nespustí
  • pravidelně opakované úkoly – spouští se pravidelně, podle definovaných intervalů

Naplánování opakované úlohy

Vytvoření naplánované úlohy vyžaduje vytvoření vlastní akce, která se zaregistruje do WordPress Cronu a naplánuje interval opakování. Jakmile je akce přidána do Cronu a ten je spuštěn, naplánovaná úloha se provede.

V následujícím příkladu naplánujeme WP Cron úlohu, který se spustí jednou za den a smaže všechny selhané objednávky.

Upozornění: pokud kód vkládáte do pluginu a ne do souboru functions.php, je třeba část kódu s wp_next_scheduled funkcí, zavěsit do init akce.

Naplánování jednorázové úlohy

Pomocí single eventu můžeme provést naplánovanou jednorázovou akci. Příklad si ukážeme na publikování skrytého článku, přesně po měsíci. Pro naplánování použijeme funkci wp_schedule_single_event

Konstanty pro plánování

  • MINUTE_IN_SECONDS = 60 (seconds)
  • HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDS
  • DAY_IN_SECONDS = 24 * HOUR_IN_SECONDS
  • WEEK_IN_SECONDS = 7 * DAY_IN_SECONDS
  • YEAR_IN_SECONDS = 365 * DAY_IN_SECONDS

Kontrola, plánování a úprava cron úloh

Přestože můžete stejného výsledku dosáhnout pomocí funkcí WordPressu a vlastního kódu, existuje několik užitečných pluginů, které vám se správou pomohou.

WP Crontrol

Plugin do záložky Nástroje po instalaci přidá položku Cron events.

V té můžete najít výpis všech naplánovaných eventů, jejich argumenty a callbacky. Každou úlohu můžte upravovat, nebo ručně spustit.

Advanced Cron Manager

Podobně jako předchozí plugin, přidává novou položku do Nástrojů. V Cron manageru můžete opět vidět seznam všech eventů. Můžete je spuštět, pozastavit, nebo smazat. Plugin má i hromadné akce, ale není možné úlohy upravovat.

Cron Logger

Malý a jednoduchý plugin, který nedělá nic jiného, než že loguje provádění eventů. V případě že potřebujete diagnostikovat provádění WP Cronu a nepotřebujete upravovat jejich nastavení, můžete jej bez problémů použít.

Log najdete opět v Nástrojích.

Závěr

Osobně si myslím, že pro větší a komplikovanější weby a e-shopy je používání WP Cronu nevhodné. Především kvůli většímu počtu dat v dadatabázi, zatížení webu a tak dále.

Pokud víte, že je třeba dělat náročnější a častější úlohy na pozadí, je lepší využít cron serveru.

V případě, že potřebujete pomoci s provozem a správou vašeho webu, napište mi na musilda@musilda.cz a pokud vám nepomohu přímo já, určitě vám dám doporučení.

Upozornění: článek obsahuje affiliate odkaz.

About The Author

Zajímá mne Wordpress, responsivní šablony a zkrátka vše kolem tohoto skvělého redakčního systému.

Související články

4 Comments

  1. Pingback: Action scheduler - Musilda.cz

  2. duro

    Bolo by možne takýmto CRONom spustiť aj funkciu, že zmaže na webe produkt ktorý je 6 mesiacov už vypredaný.

    Odpověď
    1. Musilda

      Dobrý den,

      samozřejmě, stačí napsat odpovídající funkci a nechat ji spouštět wp cronem, nebo cronem.

      Odpověď

Přidejte komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *