CRONjobs worden gebruikt om bepaalde taken in te plannen op periodieke vaste tijden, datums of intervallen op je WordPress-site. Een aantal voorbeelden van WordPress-cronjobs zijn het inplannen van een te publiceren bericht, het checken voor updates of een back-up plugin die op een vooraf gedefinieerd schema loopt.

In WordPress wordt dit afgehandeld door WP-Cron, dat wordt gebruikt om een systeem-cron te simuleren. Afhankelijk van de hoeveelheid verkeer die je site krijgt, kan deze ingebouwde cron-handler echter de laadtijden van je site negatief beïnvloeden. Vandaag laten we dus zien hoe je WP-Cron (wp-cron.php) uitschakelt en in plaats daarvan een systeem-cron kan gebruiken voor snellere prestaties.

Prestatieproblemen met WP-Cron

Bij Kinsta hebben we te maken met veel drukbezochte en veeleisende sites. Om die reden hebben we vaak prestatieproblemen gezien veroorzaakt door de ingebouwde Cron-handler van WordPress: WP-Cron. Ten eerste is het belangrijk om te weten dat WP-Cron niet een echte cronjob is, maar in feite iets dat door WordPress is gebouwd om na te bootsen wat een system-cron doet.

WP-Cron staat niet continu aan. Standaard wordt wp-cron.php geactiveerd bij elke pagina die wordt geladen, wat op sites met veel verkeer problemen kan veroorzaken. Als een site niet genoeg PHP-workers tot zijn beschikking heeft, bestaat de kans dat de cron moet wachten tot de worker klaar is, nadat WordPress de cron oproept bij het verschijnen van een bezoeker.

Ook het omgekeerde kan gebeuren. Als een site niet veel verkeer heeft, dan kunnen planningen worden gemist omdat niemand een pagina heeft geladen.

Een betere aanpak is om WP-Cron uit te schakelen en in plaats daarvan een systeem-cron te gebruiken. Deze loopt volgens een vooraf opgesteld schema en wordt zelfs aanbevolen in het officiële Plugin-handboek.

Hoe WP-Cron uit te schakelen

Om WP-Cron uit te schakelen, voeg je het volgende toe aan je wp-config.php bestand, net voor de regel die zegt: “That’s all, stop editing! Happy blogging.” Opmerking: hiermee wordt het niet meer uitgevoerd bij het laden van een pagina, maar wel wanneer je het direct aanroept via wp-cron.php. 

define ('DISABLE_WP_CRON', true);
WP-Cron uitschakelen
WP-Cron uitschakelen

Hoe System Cron te plannen

Vervolgens moet je wp-cron.php inplannen vanaf je server.

Als je site een Multisite is, zijn er enkele extra stappen die je moet nemen zodat cron jobs voor je subsites worden uitgevoerd. Hier zijn een paar bronnen die we daarvoor kunnen aanbevelen:

Voor single site WordPress gebruikers is het goede nieuws dat – wanneer je een klant van Kinsta bent – onze server-side cron elke 15 minuten standaard wp-cron.php triggert. 💪 Hiermee worden alle geplande WordPress crons uitgevoerd. Indien nodig kan je de frequentie hiervan verhogen door contact op te nemen met ons supportteam.

Als je overweg kan met SSH, dan kan je ook onze tutorial volgen over hoe je met opdrachtregels bij Kinsta server crons beheert. Al onze hostingpakketten worden geleverd met SSH toegang.

Als je geen klant bent van Kinsta, raden we je aan om WordPress Cron Jobs op de juiste manier in te stellen om te leren hoe je systeem crons instelt.

 

Cronjobs in cPanel aanmaken

Als je bij een host zit die cPanel gebruikt, kan je in het configuratiescherm van cPanel systeem-crons aanmaken. Opmerking: zorg wel dat je eerst de standaard WP-Cron uitschakelt.

Stap 1

Log in op cPanel. In de sectie Advanced, klik op Cron Jobs.

cPanel cronjobs
cPanel cronjobs

Stap 2

In het gedeelte Add New Cron Job kan je kiezen uit een aantal vooraf gedefinieerde schema’s, zoals tweemaal per uur of eenmaal per week. Je hostingprovider heeft waarschijnlijk een limiet opgesteld op hoe vaak cronjobs mogen worden uitgevoerd. Twee keer per uur is gebruikelijk voor gedeelde hosts.

cPanel cronjob instellingen
cPanel cronjob instellingen

Stap 3

Voeg de volgende opdracht toe. Vervang https://domain.com door jouw domeinnaam. Deze opdracht kan enigszins variëren, afhankelijk van hoe je hosting is geconfigureerd. Klik vervolgens op “Add New Cron Job.”

wget -q -O - https://domain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
cPanel nieuwe cronjob toevoegen
cPanel nieuwe cronjob toevoegen

Het >/dev/null 2>&1 gedeelte van bovenstaande opdracht schakelt e-mailmeldingen uit.

Crons plannen met een externe oplossing

Als je niet vertrouwd bent met het instellen van cronjobs op je server of je hostingprovider verbiedt dit, dan kan je ook een externe oplossing gebruiken, zoals EasyCron.