Jak snížit zátěž CPU na WordPressu? Upravte WP-Cron
Zdá se vám, že váš web na WordPressu je pomalý, přestože jste udělali pro optimalizaci všechno? Máme tip na dalšího viníka. Často jde právě o WP-Cron, který může web zpomalovat. Ten totiž ve svém výchozím nastavení spouští při každém načtení stránky vámi naplánované úlohy, což může při větším počtu návštěv zbytečně přetěžovat server.
V nápovědě si vysvětlíme, jak WP-Cron funguje, proč může být neefektivní a jak jej „vypnout“ a nahradit řešením, které váš web zase citelně odlehčí.
Co je to WP-Cron a jak funguje?
Každý cron má za úkol automatické spouštění naplánovaných úloh. Na WordPressu takový cron typicky spouští například publikování příspěvků, aktualizace pluginů nebo odesílání e-mailů. A jak to může mít neblahý vliv na rychlost webu? Výchozí nastavení WordPressu pak při každém načtení stránky volá po tomto souboru příkazů, což při vysoké návštěvnosti může být dosti náročné a neefektivní.
Naštěstí existuje řešení
Přesměrování cronu do skutečného systému plánování úloh (například pomocí crontab) uleví paměti (CPU) a zlepší výkon serveru. Jedna z možností jak ulehčit zátěži CPU je i přejít z WP-Cronu na cron systémový. Ukážeme, si, jak na to.
Pár důvodů proč přejít z WP-Cronu na systémový Cron
Důvod č. 1: Výkon
- WP-Cron se spouští při každém načtení stránky, což znamená, že pokud web navštíví hodně uživatelů najednou, wp-cron.php se může spustit až několikrát za sekundu. To zatěžuje server a může vést k přetížení CPU, zejména na sdílených nebo virtuálních serverech (VPS).
- Systémový Cron se spouští nezávisle na návštěvnosti webu. Úlohy jsou naplánovány pevně (např. každých 5 minut), a díky tomu nedochází k nadměrnému zatěžování serveru ve „špičce“ návštěvnosti.
Důvod č. 2: Spolehlivost
- WP-Cron je závislý na návštěvách webu. Pokud na web nikdo nepřijde (např. v noci), plánované úkoly se nemusí spustit včas nebo vůbec. To může být problém pro weby s nízkou návštěvností nebo pro úlohy, které potřebují přesný čas spuštění.
- Systémový Cron funguje spolehlivě a pravidelně, bez ohledu na návštěvnost webu. I v případě nulové návštěvnosti se naplánované úlohy spustí přesně podle harmonogramu.
Důvod č. 3: Kontrola a flexibilita
- WP-Cron funguje „automaticky“, nemáte u něj kontrolu nad tím, kdy přesně a jak často se úlohy spustí. Frekvence je nepřímá a vždy závisí na návštěvnosti webu.
- Systémový Cron umožňuje plnou kontrolu nad časováním. Můžete si nastavit přesné intervaly (např. každých 5 minut nebo jednou za hodinu) a být si jisti, že se spustí pouze jednou v daném čase, bez ohledu na okolnostech.
Jak přejít na systémový cron
Na systémový cron lze přejít jednoduše pomocí VPS Centra. Výhodou nastavení cronu přes VPS Centrum je, že příkazy spuštěné zde jdou přes www-data uživatele, tedy je zde menší šance rizika než při použití uživatele root.
Krok 1: Vypněte výchozí WordPress Cron
Otevřete soubor wp-config.php v instalačním souboru WordPressu. Přidejte následující řádek (ideálně těsně nad /* That’s all, stop editing! Happy publishing. */):
define('DISABLE_WP_CRON', true);
Tím zakážete výchozí spuštění wp-cron.php při každém načtení stránky.
Krok 2: Nastavte systémový cron přes VPS Centrum
Prvně se tedy přihlaste do VPS Centra a následně jděte do sekce „Cron“
- Do pole „Předvolba“ vyplňte 5 minut.
- Do „PHP skript“ dejte wp-cron.php
- A nakonec doporučujeme zaškrtnout pole „Spustit na test“.
- Na závěr klikněte na „Uložit“, tím se nový cron bezpečně uloží.
- Počkejte několik minut na zpracování.
Funkčnost cronu ověříte tím, že zkontrolujete:
- Naplánované úkoly ve WordPressu.
- Zátěž CPU na serveru (pomocí htop nebo top nebo konkrétních pluginů)
Pro ověření můžete také spustit wp-cron.php manuálně přes prohlížeč.