Cronjob of taak aanmaken (en wat te doen als hij niet draait)
Met een cronjob (in DirectAdmin: Cron Taken) laat je een script automatisch op vaste tijden draaien, bijvoorbeeld elke nacht. Hieronder lees je hoe je er een aanmaakt en wat je doet als hij niet werkt.
Regels voor cronjobs
- Bij Webhost One en Webhost Two mag er hooguit één keer per 10 minuten een taak starten, voor al je taken samen.
- Bij de Power Webhost-pakketten mogen taken vaker draaien.
- Verdeel meerdere cronjobs over de tijd en kies een rustig tijdstip, zoals 03:17 in plaats van precies middernacht.
- Zware cronjobs die de server lang belasten, zijn niet toegestaan. Er draaien meer websites op dezelfde server. Zo nodig stoppen we een cronjob. Houd je taken daarom kort en laat ze niet vaker draaien dan nodig.
Een cronjob aanmaken
- Log in op DirectAdmin en klik onder Geavanceerde Functies op Cron Taken.
- Klik op Cron taak aanmaken.
- Vul de minuut, het uur, de dag, de maand en de dag van de week in. Vul de minuut altijd in met een getal, geen sterretje, anders draait de taak elke minuut.
- Vul bij de opdracht het volledige pad in, bijvoorbeeld:
/usr/local/bin/php -q /home/gebruiker/domains/jouwdomein.nl/public_html/taak.php
Vervang gebruiker door je DA-gebruikersnaam. - Klik op Aanmaken.

Mail na elke cronjob
De uitvoer van een cronjob gaat naar het standaard e-mailaccount van je pakket, zie Het standaard e-mailaccount in DirectAdmin. Je kunt de uitvoer ook naar een eigen adres sturen met Stuur alle cron uitvoer naar e-mail. Wil je geen mail, klik dan bij het aanmaken op Voorkom e-mails, of zet achter de opdracht:
>/dev/null 2>&1
Let op bij PHP-scripts
Een script dat vanuit een cronjob draait, weet niet onder welk domein het draait. $_SERVER['SERVER_NAME'] en $_SERVER['DOCUMENT_ROOT'] zijn leeg, en een include met een relatief pad kan mislukken. Zet daarom bovenaan je script:
$pad = '/home/gebruiker/domains/jouwdomein.nl/public_html'; $_SERVER['SERVER_NAME'] = 'jouwdomein.nl'; $_SERVER['DOCUMENT_ROOT'] = $pad; set_include_path($pad . PATH_SEPARATOR . get_include_path());
Draait je cronjob niet?
Loop deze punten een voor een na:
- Lees de uitvoer. Haal
>/dev/null 2>&1tijdelijk weg en kijk in de mail in het standaard e-mailaccount, of stel een eigen adres in. Daar staat vaak precies wat er misgaat. Je kunt de uitvoer ook naar een logbestand schrijven door achter de opdracht>> /home/gebruiker/cron-log.txt 2>&1te zetten. - Controleer het pad. De melding Could not open input file betekent dat het pad naar het script niet klopt. Kijk in Bestandsbeheer: het pad begint met
/home/gebruiker/domains/. - Controleer de PHP-versie. Met
/usr/local/bin/phpgebruikt de taak dezelfde PHP-versie als je website. Werkt je script alleen op een andere versie, pas die dan aan bij Select PHP version. - Test de opdracht met de hand. Heb je een pakket met Terminal, plak de opdracht dan daar en kijk wat er gebeurt, zie SSH of de Terminal openen in DirectAdmin. Zonder Terminal open je het script in je browser, of roep je het in de cronjob aan via
curl --silent https://www.jouwdomein.nl/taak.php. - Controleer de rechten. Het script moet leesbaar zijn: bestanden horen op 644 te staan en mappen op 755. Zie Rechten van bestanden en mappen (chmod).
- Controleer het tijdstip. Kijk bij Cronjob wordt uitgevoerd: of de taak draait wanneer jij denkt. Staat er een sterretje bij de minuut, dan draait hij elke minuut en kan hij worden gestopt.
- Controleer de pakketlimiet. Draait de taak vaker dan je pakket toestaat, of duurt hij te lang, dan wordt hij afgebroken. Verdeel het werk dan over meerdere rondes.
date >> /home/gebruiker/cron-log.txt; voor je opdracht.Zie ook in de DirectAdmin-handleiding: Het standaard e-mailaccount van je pakket.
Uitgebreide uitleg met schermafbeeldingen: Cron Taken: taken automatisch laten draaien in de DirectAdmin-handleiding.
