Wanneer je een website/webshop hebt is er soms een reeks aan taken die je uitvoert om de website up-to-date te houden of waarmee je bepaalde acties uitvoert. UIteraard kun je deze taken handmatig uitvoeren, maar het is makkelijker om deze automatisch voor je uit te laten voeren. Daarvoor zijn cronjobs handig; dit zijn periodieke taken die door de server uitgevoerd worden dan.
In dit artikel leggen we uit hoe je deze kunt instellen via cpanel en via SSH.
Hoe is een cronjob opgesteld?
Een cronjob bestaat altijd uit twee onderdelen:
-
Een tijdsaanduiding
-
De taak
Kijk voor een voorbeeld hieronder:
12 6 * * * php /home/domein1q/public_html/cron.php
We zullen aan de hand van bovenstaande cronjob uitleggen hoe je deze moet lezen
Tijdsaanduiding
Voor de tijdsaanduiding kun je de volgende tabel gebruiken
m |
minuten (0 -59) |
h |
uur (0-23) |
dom |
dag van de maand (1 -31) |
mon |
maand van het jaar (1-12) |
dow |
dag van de week (mon,tue,wed,thu,fri,sat,sun) |
Kijken we dus weer naar het voorbeeld dan kunnen we hem als volgt lezen:
m = 12
h = 6
dom = *
mon *
dow = *
Dit houdt dus in dat elke dag, in een week, van elke maand, de cronjob om 06:12 aangeroepen zal worden.
Taak specificeren
Het gedeelte taak bestaat ook weer uit twee onderdelen:
-
gebruikt programma
-
locatie van bestand dat je wilt uitvoeren
In het voorbeeld zie je dus dat we PHP als programma gebruiken en dat we hiermee het bestand cron.php in de locatie /home/domein1q/public_html/ uitvoeren. Kortom; elke dag, in een week, van elke maand, om 06:12 wordt het programma PHP gebruikt om het bestand cron.php uit te voeren van de locatie /home/domein1q/public_html .
Let op! Om enkel php in je cronjob te gebruiken is het van belang dat je bovenaan je cronjob nog het volgende gedeelte plaatst:
PATH=/usr/local/bin/:/usr/bin:/bin
Je cronjob wordt dan als volgt:
PATH=/usr/local/bin/:/usr/bin:/bin
12 6 * * * php /home/domein1q/public_html/cron.php
Doe je dit niet dan werkt php niet en moet je een van de onderstaande opties gebruiken:
- /usr/local/bin/php (dan gebruik je de standaard PHP versie van je server)
- /opt/cpanel/ea-php70/root/usr/bin/php (Indien je PHP 7 wilt gebruiken)
- /opt/cpanel/ea-php56/root/usr/bin/php (Indien je PHP 5.6 wilt gebruiken)
Extra opties
Er zijn echter nog extra onderdelen die je kunt toevoegen aan je cronjob welke verschillende acties doorvoeren. Hieronder behandelen we enkele veelvoorkomende extra opties:
Output mailen van de cronjob
Je kunt de output van een cronjob naar een e-mailadres laten mailen. Hiervoor gebruik je het volgende gedeelte MAILTO= iets@domein.nl. Wanneer je dit toepast op de cronjob uit het voorbeeld dan wordt het als volgt:
MAILTO= iets@domein.nl
12 6 * * * php /home/domein1q/public_html/cron.php
Output van cronjob wegschrijven naar /dev/null
Indien je totaal geen output wilt ontvangen van de cronjob (eventuele errors en/of berichtje dat het is uitgevoerd), dan voeg je het volgende gedeelte toe aan je cronjob: >> /dev/null 2>&1
Wanneer je dit toepast op de cronjob uit het voorbeeld dan wordt het als volgt:
12 6 * * * php /home/domein1q/public_html/cron.php >> /dev/null 2>&1
Hoe stel ik een cronjob in?
Bij ons kun je dat op twee manieren doen:
-
Via cPanel
-
Via SSH
Beide manieren worden hieronder behandeld
Cronjob instellen via cPanel
In cPanel kun je cronjobs instellen via de optie Cron-taken onder de categorie Geavanceerd
Je kunt op deze pagina de volgende dingen doen
E-mail: Hier vul je een e-mailadres in waar je de output van je cronjob naar wilt sturen.
Nieuwe cron-taak toevoegen: Hier kun je specifiek de tijdsaanduiding zelf instellen of je kiest bij Standaardinstellingen voor een aantal voorgeprogrammeerde settings. Onder Opdracht geef je dan het programma en de locatie van het bestand op dat je wilt laten uitvoeren.
Huidige cron-taken: Hier kun je reeds ingestelde cronjobs aanpassen met bewerken of verwijderen met verwijderen.
Cronjob instellen via SSH
Als je ingelogd bent met SSH gebruik je het commando crontab -e om je crontab in te stellen.
Veelgestelde vragen
Kan ik beter Wget of PHP gebruiken voor mijn cronjob?
Beide programma’s kan je prima gebruiken bij ons voor je cronjob. Wij raden je aan om het programma te gebruiken, dat de instantie van je cronjob adviseert.