Webhosting

Cron (en WP-Cron)

Definitie

Cron is de taakplanner van Unix- en Linux-systemen: hij start opdrachten op vaste tijden volgens een tabel die crontab heet. WP-Cron is het interne mechanisme van WordPress voor geplande taken (publicaties, updates, back-ups, e-mails); het heeft geen eigen klok en draait alleen wanneer er een pagina wordt geladen.

Cron (en WP-Cron), Webhosting

De naam komt van het Griekse chronos, tijd. Op een Linux-server leest de cron-daemon tabellen met taken en voert elke opdracht op het geplande moment uit: elke nacht een back-up, het vernieuwen van een Let's Encrypt-certificaat, het opruimen van tijdelijke bestanden. WordPress heeft dezelfde dienst nodig, maar kan niet rekenen op toegang tot de systeemcron, die bij sommige hostingpakketten ontbreekt. Daarom heeft het een eigen mechanisme: WP-Cron.

De syntaxis van een crontab

Elke regel begint met vijf velden: minuut (0 tot 59), uur (0 tot 23), dag van de maand (1 tot 31), maand (1 tot 12) en dag van de week (0 tot 7, waarbij 0 en 7 allebei zondag zijn), gevolgd door de opdracht. Een sterretje betekent "elke", en */15 in het minutenveld start de taak op minuut 0, 15, 30 en 45.

*/15 * * * * opdracht-elke-15-minuten
0 3 * * * opdracht-elke-nacht-om-3-uur

Hoe WP-Cron werkt

Volgens de documentatie van WordPress controleert WP-Cron bij elke paginalading de lijst met geplande taken en voert het de taken uit die aan de beurt zijn. De standaardintervallen zijn hourly, twicedaily, daily en weekly; plugins voegen er andere aan toe. Die werkwijze heeft twee gevolgen. Komt er niemand op de site, dan gebeurt er niets: een taak die om 14.00 uur gepland staat, kan tot 17.00 uur wachten, zoals de documentatie opmerkt. Verloren is ze niet, ze start bij het volgende bezoek. Op een drukbezochte site vindt de controle daarentegen voortdurend plaats.

Vergelijking tussen WP-Cron en de systeemcron. WP-Cron: gestart wanneer een pagina wordt geladen, een taak die om 14.00 uur gepland staat, kan op het volgende bezoek wachten, een site met weinig bezoekers loopt achter, een drukbezochte site voert de controle bij elke pagina uit, standaard actief zonder instellingen. Systeemcron: gestart door de klok van de server, met een vaste interval, onafhankelijk van het verkeer, ingeschakeld door DISABLE_WP_CRON in wp-config.php te definiëren en een crontab-regel toe te voegen die wp cron event run --due-now start of wp-cron.php aanroept.
WP-Cron hangt af van bezoeken; de systeemcron volgt de klok.

Het gaat onder meer om het publiceren van ingeplande berichten, de controles en automatische updates, back-ups van plugins, het versturen van nieuwsbrieven en beveiligingsrapporten.

Overstappen op de systeemcron

De oplossing die de documentatie aanbeveelt, is het starten via bezoeken uit te schakelen in wp-config.php:

define( 'DISABLE_WP_CRON', true );

en het starten daarna over te laten aan de cron van de server, met een verzoek naar wp-cron.php of, als de hoster WP-CLI aanbiedt, met een opdracht die alle openstaande taken uitvoert en overlappende uitvoeringen voorkomt:

*/5 * * * * cd /pad/naar/de/site && wp cron event run --due-now --quiet

Bij shared hosting heeft het controlepaneel meestal een onderdeel "Cronjobs" waarin je deze regel zonder terminal toevoegt.

Video: “How to Setup External Cron Jobs in WordPress” (WP Speed Matters, in het Engels)

Voor WordPress

  • Houd een redelijke interval aan, van 5 tot 15 minuten: elke minuut draaien belast een kleine server voor niets.
  • Controleer of de systeemtaak werkt voordat je hem vergeet: zodra DISABLE_WP_CRON is gedefinieerd, draait er niets meer als de crontab-regel fout is. wp cron event list toont de volgende tijdstippen en laat zien welke taken achterlopen.
  • Pas op met kopieën: op een stagingomgeving kunnen geplande taken e-mails naar echte klanten sturen of externe gegevens synchroniseren. Schakel ze uit of maak het versturen onschadelijk.
  • Geplande back-ups van een plugin hangen af van WP-Cron: controleer of ze echt worden gemaakt, zodat je je back-upstrategie naleeft.

Veelgemaakte fouten

Een onbekende taak in de lijst met geplande gebeurtenissen verdient een nader onderzoek: sommige malware installeert zichzelf na elke schoonmaak opnieuw via een geplande taak.

Bronnen

  1. Plugin Handbook: Cron (externe link, opent in een nieuw tabblad)
  2. Plugin Handbook: Hooking WP-Cron Into the System Task Scheduler (externe link, opent in een nieuw tabblad)
  3. WP-CLI Commands: wp cron event run (externe link, opent in een nieuw tabblad)
  4. Linux manual page: crontab(5) (externe link, opent in een nieuw tabblad)

Alle definities

WordPress-beveiliging, zonder ruis

Eén e-mail wanneer het ertoe doet: nieuw waargenomen aanvallen, updates van de plugin en praktische gidsen. Geen spam, afmelden met één klik.

Begin gratis, stap over op Pro wanneer je eraan toe bent

De gratis versie verbergt WordPress al en verplaatst de inlogpagina. Pro voegt aliassen, tweestapsverificatie en bewaking toe.