Overzicht van geautomatiseerde Cron-taken
Het configureren van cron is een belangrijke stap bij het opzetten van een website. Cron helpt bij het onderhouden van sitebronnen voor zoekresultaten, het controleren op updates van Drupal-core en modules, en het verwijderen van tijdelijke bestanden.
Een goed ingestelde cron-taak voert een groot aantal onderhoudstaken uit:
- Werkt de inhoudsindex bij die wordt gebruikt door de zoekmodule.
- Verwerkt wachtrijen voor feeds die worden bijgewerkt door de aggregator-module.
- Controleert op beschikbare updates voor de updatebeheerder-module.
- Voert routinematig onderhoud uit, zoals het verwijderen van oude logregels voor de systeem-module.
Wat is cron?
Cron is een systeemdienst (daemon) die opdrachten uitvoert op vooraf ingestelde tijdsintervallen. Deze opdrachten worden “cronjobs” genoemd. Cron is beschikbaar op Unix-, Linux- en Mac-servers. Windows-servers gebruiken een geplande taak om opdrachten uit te voeren. Een cronjob is in feite een tijdgestuurde actie die meestal (en het meest efficiënt) door de hostingserver van je site wordt uitgevoerd, maar het kan ook worden ingesteld op een externe server of zelfs op je eigen computer.
Wat er feitelijk gebeurt, is dat de cronjob het bestand cron.php
op je website aanroept via een URL, bijvoorbeeld:
http://www.example.com/cron.php?cron_key=0MgWtfB33FYbbQ5UAC3L0LL3RC0PT3RNUBZILLA0Nf1Re
.
De exacte URL van het bestand cron.php vind je in het statusrapport op Beheer > Rapporten > Statusrapport (admin/reports/status
), onder de sectie “Cron onderhoudstaken”.
Cron inschakelen
De eenvoudigste manier is om Drupal dit automatisch te laten doen (de standaardinstelling), via het ingebouwde systeem “Automated Cron”.
Je kunt dit beheren via Beheer > Configuratie > Systeem > Cron (admin/config/system/cron
).
De standaardfrequentie is elke drie uur.
Daarna zal cron worden uitgevoerd door bezoekers van je site, maar niet vaker dan eens per drie uur.
Voor sites met weinig verkeer kan het echter nuttig zijn om een eigen cronjob aan te maken.
Wil je de geautomatiseerde cron uitschakelen, stel dan “Cron uitvoeren elke” in op “nooit”.
Het geautomatiseerde cronsysteem werkt op alle systemen, omdat het niet de systeemdienst cron gebruikt. Het controleert aan het einde van elk Drupal-verzoek wanneer cron voor het laatst is uitgevoerd en, als dat te lang geleden is, voert het de crontaken uit als onderdeel van dat verzoek. Twee nadelen hiervan zijn: (1) crontaken worden alleen uitgevoerd wanneer Drupal een verzoek verwerkt; en (2) de extra belasting (verwerking en geheugen) van het uitvoeren van cron wordt toegevoegd aan een willekeurig gebruikersverzoek, wat de prestaties kan vertragen of zelfs geheugenlimieten kan overschrijden op complexe sites.
De tweede methode (die werkt in elke Drupal-versie) is om een cronjob aan te maken of een andere externe methode te gebruiken, zoals een cronservice van derden, bijvoorbeeld EasyCron of Cronless. Dit is de betrouwbaardere methode (omdat deze altijd op schema wordt uitgevoerd) en gebruikt minder serverbronnen (omdat de cronverwerking niet tijdens een pagina-aanvraag plaatsvindt). Daarom is dit meestal de voorkeursmethode wanneer je de keuze hebt. Let op: als je een externe cronjob instelt, kun je het interne “Automated Cron”-systeem volledig uitschakelen.
Automated Cron uitschakelen
Om prestatie-redenen, of wanneer je wilt dat cron uitsluitend via een externe trigger wordt uitgevoerd, kun je het geautomatiseerde cronsysteem uitschakelen.
Je kunt dit doen door in Beheer > Configuratie > Systeem > Cron (admin/config/system/cron
) de optie “Cron uitvoeren elke” in te stellen op “Nooit”.
Een andere manier om cron in Drupal 8 uit te schakelen, is door de volgende regel toe te voegen aan het bestand settings.php:
$config['automated_cron.settings']['interval'] = 0;
Let op: dit zet de admin-instelling admin/config/system/cron
vast op “Nooit”, en beheerders kunnen deze niet meer wijzigen via de interface.