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);
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:
- WP CLI gebruiken om cronjobs op Multisite netwerken uit te voeren
- WordPress cron uitvoeren op een Multisite instance
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.
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.
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
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.