Hoe werkt WP-Cron standaard in WordPress?
WordPress gebruikt WP-Cron om taken op geplande momenten uit te voeren. Denk aan:
- Het publiceren van ingeplande blogartikelen.
- Het versturen van e-mails en notificaties.
- Het controleren op updates.
- Het opruimen van tijdelijke gegevens.
- Het uitvoeren van geplande taken van plugins, bijvoorbeeld in WooCommerce.
Je zou verwachten dat deze taken op het ingestelde tijdstip worden uitgevoerd. Maar standaard werkt WP-Cron anders dan een traditionele cronjob op een server.
WordPress heeft standaard geen eigen proces dat op vaste momenten geplande taken uitvoert. In plaats daarvan controleert WordPress bij websitebezoeken of er taken klaarstaan. Is dat het geval, dan wordt WP-Cron gestart.
Dat heeft twee nadelen:
1. WP-Cron is afhankelijk van websitebezoekers
Stel dat je een artikel hebt ingepland voor 03:00. Als niemand rond dat tijdstip je website bezoekt, wordt WP-Cron pas gestart zodra de volgende bezoeker langskomt.
Gevolg: je artikel wordt later gepubliceerd dan gepland.
Voor websites met weinig verkeer betekent dat dat taken aanzienlijk later worden uitgevoerd dan de bedoeling was.
2. WP-Cron kan de prestaties van je website beïnvloeden
Wanneer WordPress tijdens een websitebezoek constateert dat er taken klaarstaan, veroorzaakt dat extra verwerking. Denk aan databasequeries, PHP-processen en andere werkzaamheden die niets te maken hebben met de pagina die de bezoeker wil openen.
Vooral bij grotere WordPress-websites en WooCommerce-webshops, waar veel achtergrondtaken worden uitgevoerd, wil je die werkzaamheden zo veel mogelijk loskoppelen van het bezoekersverkeer.
De oplossing: server-side WP-Cron
In plaats van WordPress te laten bepalen wanneer geplande taken worden gestart, kun je dit overlaten aan de server.
Dat noemen we server-side WP-Cron.
Het principe is eenvoudig:
- Je schakelt de standaard, bezoekersafhankelijke uitvoering van WP-Cron uit.
- Je maakt een cronjob aan die periodiek de geplande WordPress-taken uitvoert.
- WordPress verwerkt deze taken voortaan op de achtergrond, onafhankelijk van websitebezoeken.
Hoe werkt server-side WP-Cron in Cyberfusion Core?
Bij Cyberfusion gebruiken we WP-CLI om WordPress-taken rechtstreeks via de server uit te voeren.
Daarvoor gebruiken we het commando:
wp cron event run --due-now
Dit commando voert WordPress-taken uit waarvan het geplande tijdstip is bereikt.
Daarnaast stellen we in de WordPress-configuratie het volgende in:
define('DISABLE_WP_CRON', true);
Hiermee voorkomen we dat WordPress zijn geplande taken alsnog via websitebezoeken start.
De cronjob in Core neemt die verantwoordelijkheid vervolgens over.
Iedere vijf minuten, onafhankelijk van bezoekers
Core voert WP-Cron periodiek uit, zodat WordPress-taken ook worden verwerkt wanneer er geen bezoekers zijn.
Om te voorkomen dat verschillende websites allemaal precies tegelijk hun cronjobs uitvoeren, ondersteunt Core een willekeurige vertraging bij het starten van crons.
Daarnaast gebruiken we locking. Daarmee voorkomen we dat dezelfde cronjob opnieuw wordt gestart terwijl een eerdere uitvoering nog actief is.
Dat is belangrijk bij WordPress-websites met langdurige achtergrondtaken. Zonder deze bescherming kunnen meerdere uitvoeringen elkaar overlappen, met onnodige serverbelasting als gevolg.
Ook worden uitgevoerde cronjobs gelogd. Bij fouten kun je de output bekijken en meldingen ontvangen, zodat eventuele problemen eenvoudig te onderzoeken zijn.
Standaard ingeschakeld bij nieuwe WordPress-installaties
Maak je via Cyberfusion Core een nieuwe WordPress-website aan? Dan configureren we server-side WP-Cron automatisch.
Je hoeft daarvoor zelf geen cronjob aan te maken of wijzigingen in wp-config.php door te voeren.
Dit is onderdeel van de optimalisaties die Core standaard toepast bij nieuwe WordPress-installaties.
Zo zorgen we ervoor dat WordPress vanaf het begin is ingericht op voorspelbare uitvoering van achtergrondtaken.
Nu ook eenvoudig in te schakelen voor bestaande WordPress-websites
Maar wat als je WordPress-website al bestaat, bijvoorbeeld omdat je deze vanuit een andere hostingprovider naar Core hebt gemigreerd?
Voorheen moest je de WordPress-configuratie aanpassen en zelf een cronjob aanmaken.
Daar hebben we nu een functie voor toegevoegd.
Core controleert automatisch hoe WP-Cron voor een WordPress-installatie is ingericht en toont de huidige status.
Daarbij onderscheiden we vier situaties:
- Active: server-side WP-Cron is correct ingesteld.
- Not active: WordPress voert taken nog uit via websitebezoeken.
- Runs twice: er is een servercron aanwezig, maar WordPress start taken ook nog via websitebezoeken.
- Nothing runs the scheduled tasks: WP-Cron is uitgeschakeld, maar er is geen servercron die de taken overneemt.
Met de knop Configure Server wp-cron laat je Core de ontbrekende instellingen automatisch configureren.
Core schakelt waar nodig de standaard WP-Cron-uitvoering uit en maakt een cronjob (de server WP-Cron) aan die de geplande taken verwerkt.
Geïntegreerd met de health-checks van Core
Een WordPress-optimalisatie heeft pas echt waarde wanneer je ook kunt controleren of deze correct is ingesteld.
Daarom sluit server-side WP-Cron aan op de health-checks van Cyberfusion Core.
Met health-checks controleren we automatisch of websites en applicaties optimaal zijn geconfigureerd. Denk aan ontbrekende database-indexen, verouderde PHP-versies en beveiligingsinstellingen.
Je kunt daardoor eenvoudig zien welke WordPress-installaties nog gebruikmaken van de standaard WP-Cron-methode en waar verbetering mogelijk is.
Dat is vooral zinvol voor webbureaus die tientallen of honderden websites beheren. Je hoeft niet voor iedere installatie afzonderlijk te controleren om te weten welke websites nog aandacht nodig hebben.
Waarom dit vooral voor WooCommerce belangrijk is
Bij WooCommerce worden veel achtergrondtaken uitgevoerd. Denk aan het verwerken van bestellingen, versturen van e-mails, bijwerken van voorraadgegevens, en uitvoeren van geplande acties.
WooCommerce gebruikt hiervoor onder andere de Action Scheduler, een systeem waarmee taken op de achtergrond worden verwerkt.
Wanneer die verwerking afhankelijk is van bezoekersverkeer, kunnen taken vertraging oplopen. En drukke webshops veroorzaken veel achtergrondwerk.
WordPress-optimalisaties standaard in Core
Server-side WP-Cron past bij onze visie op échte managed hosting.
We vinden dat veelvoorkomende optimalisaties onderdeel moeten zijn van het hostingplatform, zodat developers deze niet steeds opnieuw hoeven uit te voeren.
Daarom bieden we onder andere:
- Automatische installatie van WordPress met vooraf ingestelde optimalisaties.
- Geoptimaliseerde PHP-FPM- en OPcache-configuraties.
- Automatische detectie en aanvulling van ontbrekende WordPress-database-indexen.
- Redis-ondersteuning voor objectcaching.
- Automatische controles op CMS-versies en bekende beveiligingsproblemen.
- Health-checks voor beveiliging en prestaties.
Met server-side WP-Cron nemen we opnieuw een veelvoorkomende optimalisatie uit handen.
Server-side WP-Cron inschakelen in Core
Gebruik je al Cyberfusion Core? Dan kun je voor bestaande WordPress-installaties eenvoudig controleren of server-side WP-Cron correct is ingesteld.
Core toont de huidige status. Is de configuratie nog niet optimaal? Klik dan op Configure Server wp-cron om de aangeraden instellingen automatisch toe te passen.
Meer weten over de werking en instellingen? Lees onze documentatie over server-side WP-Cron.
Nog geen klant? Ontdek Cyberfusion Core, het échte managed-hostingplatform voor webprofessionals.