# Cronjobs Instellen en Beheren

Source: https://support.kapsulehost.com/nl-nl/cron-jobs

A cron job voert een opdracht uit volgens een schema, op de achtergrond, ongeacht of iemand uw site bezoekt. Deze handleiding behandelt het toevoegen van een job in KPanel, het correct opstellen van het schema en de opdracht voor dit platform, het vervangen van de onbetrouwbare ingebouwde planner van WordPress, en het vinden van de uitvoer wanneer een job niet doet wat u verwachtte.

## Waar Cron Zich Bevindt in KPanel

Cron hoort bij een site, dus u bereikt het vanuit de site en niet vanuit het hoofdmenu:

1. Meld u aan bij [KPanel](https://kpanel.kapsulehost.com) en klik op **Websites** in de linker zijbalk.
2. Klik op de gewenste site.
3. Open in het eigen menu van de site **Instellingen** en vervolgens **Cron**.

Het directe adres is `/websites/<site-id>/cron`. U ziet een tabel met bestaande jobs, of een lege weergave als de site er geen heeft.

![De Cron-pagina voor een site in KPanel, met de geplande jobs op die site](https://support.kapsulehost.com/help/screenshots/cron-jobs.13aef775.webp)

## Een Job Toevoegen

Klik rechtsboven op **Cronjob toevoegen**. Het formulier heeft drie velden.

### Schema

Zes vooraf ingestelde knoppen vullen de expressie voor u in:

| Knop | Expressie |
|---|---|
| Elke minuut | `* * * * *` |
| Elke 5 min | `*/5 * * * *` |
| Elk uur | `0 * * * *` |
| Dagelijks 2:00 uur | `0 2 * * *` |
| Wekelijks zondag | `0 2 * * 0` |
| Maandelijks 1e | `0 2 1 * *` |

Of typ uw eigen expressie in **Cronexpressie**. De vijf velden zijn, in volgorde: minuut, uur, dag van de maand, maand, dag van de week:

```
minute  hour  day-of-month  month  day-of-week
```

- `0 3 * * *` draait elke dag om 3:00 uur.
- `*/15 * * * *` draait elke vijftien minuten.
- `0 9 * * 1` draait elke maandag om 9:00 uur.
- `30 1 1 * *` draait om 1:30 uur op de eerste van elke maand.
- `0 */6 * * *` draait elke zes uur, op het hele uur.

### Label

Een naam die u later herkent, zoals `WordPress cron` of `Nightly stock sync`. Dit is wat de takenlijst u toont, maak het dus beschrijvend: `job 3` helpt niemand om 2 uur 's nachts.

### Opdracht

De shellopdracht die moet worden uitgevoerd. Klik op **Opslaan** om de job aan te maken.

> **Warning:** Gebruik volledige paden. Cron draait met een minimale omgeving en zonder uw shellprofiel, dus een kale `php` of een relatief pad dat werkt wanneer u bent ingelogd via SSH, mislukt hier stilletjes. Schrijf elke keer het volledige pad uit.

## De Opdracht Opstellen

Jobs draaien als de eigen systeemgebruiker van uw site, dus uw thuismap is het juiste ankerpunt en `~` wordt correct herleid. De bestanden van uw site bevinden zich op:

```
~/htdocs/yourdomain.co.nz
```

U kunt het exacte pad bevestigen op het tabblad **Instellingen**, vervolgens **SFTP** van de site, waar het wordt weergegeven onder **Sitebestanden**.

Typische opdrachten:

```
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now
```

```
cd ~/htdocs/yourdomain.co.nz && /usr/bin/php bin/send-queued-emails.php
```

```
/usr/bin/curl -fsS https://yourdomain.co.nz/api/nightly-report
```

> **Tip:** Test de opdracht voordat u deze plant. Plak hem in de sectie **WordPress**, vervolgens **Console** van de site als het een `wp`-opdracht is, of voer hem uit via SSH. Een job die nooit zou werken, is veel makkelijker op te sporen bij de prompt dan om 3 uur 's nachts in een logbestand.

## De Ingebouwde Planner van WordPress Vervangen

WordPress wordt geleverd met een eigen pseudo-planner, WP-Cron, die alleen wordt geactiveerd wanneer iemand een pagina laadt. Op een rustige site worden geplande berichten te laat gepubliceerd en stapelen e-mails zich op zonder te worden verzonden. Op een drukke site betaalt elke bezoeker de prijs van het controleren van het schema.

Een echte cron job lost beide problemen op. KPanel regelt de hele omschakeling voor u:

1. Open de site en daarna het tabblad **WordPress**.
2. Open de sectie **WP-Cron**.
3. Klik op **Systeem-cron inschakelen**.

Dat voegt een schema toe dat WP-Cron elke vijf minuten uitvoert en stelt `DISABLE_WP_CRON` in, zodat paginaweergaven het niet meer activeren. **Systeem-cron verwijderen** op hetzelfde scherm maakt beide onderdelen ongedaan.

Als u het liever handmatig doet, zijn het twee stappen:

**De door bezoekers geactiveerde versie uitschakelen.** Voeg dit toe aan `wp-config.php`, boven de regel `/* That's all, stop editing! */`, met **Instellingen**, vervolgens **Bestandenbeheerder**:

```php
define( 'DISABLE_WP_CRON', true );
```

**De echte job toevoegen.** In **Instellingen**, vervolgens **Cron**:

- Schema: `*/5 * * * *`
- Label: `WordPress cron`
- Opdracht: `cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now`

> **Warning:** Sla het onderdeel `DISABLE_WP_CRON` niet over. Als beide actief zijn, kan elke geplande taak twee keer worden geactiveerd: dubbele e-mails, dubbele orderverwerking, dubbele afschrijvingen bij een abonnementsplugin. Gebruik de actie met één klik in de sectie WP-Cron, dan kan dit u niet overkomen.

## WooCommerce en Achtergrondwachtrijen

WooCommerce gebruikt een achtergrondwachtrij voor wijzigingen in orderstatus, verlengingen van abonnementen, e-mails en voorraadupdates. Dit is afhankelijk van WP-Cron, dus het is precies de belasting die lijdt op een rustige webshop.

Zodra het echte schema actief is, wordt de wachtrij elke vijf minuten verwerkt. Bekijk dit bij **WooCommerce**, vervolgens **Status**, vervolgens **Scheduled Actions** in wp-admin.

Een webshop met een hoog volume kan overstappen naar `*/2 * * * *`. Daaronder gaan helpt zelden: u besteedt dan meer tijd aan het starten van processen dan aan het uitvoeren van werk. Zie [WooCommerce Instellen](https://support.kapsulehost.com/nl-nl/wordpress-woocommerce).

## Bestaande Jobs Beheren

De takenlijst toont **Label**, **Schema**, **Opdracht**, **Laatste uitvoering** en **Status**, met twee acties per rij:

- **Uitschakelen** pauzeert een job zonder deze te verwijderen, en verandert in **Inschakelen** om hem terug te zetten. Gebruik dit wanneer u test of een job een probleem veroorzaakt.
- **Verwijderen** verwijdert de job permanent. U wordt gevraagd om te bevestigen, en geplande uitvoeringen stoppen onmiddellijk.

> **Important:** Het verwijderen van een cron job kan niet ongedaan worden gemaakt. Het schema wordt op dat moment direct van de server verwijderd. Als u de job alleen tijdelijk wilt stoppen, gebruik dan **Uitschakelen**.

## De Uitvoer Vinden

Van elke job die KapsuleHost aanmaakt, wordt de uitvoer voor u vastgelegd. Standaarduitvoer en fouten worden toegevoegd aan een logbestand in een map `cron-logs` in de thuismap van uw sitegebruiker, een bestand per job.

Dat logbestand geeft het antwoord op bijna elke vraag van het type "is mijn job uitgevoerd?", omdat het vastlegt wat de opdracht heeft weergegeven en welke fout er eventueel is opgetreden.

Om het te lezen, maakt u verbinding via SSH en kijkt u in `~/cron-logs/`. SSH gebruikt sleutelauthenticatie, dus voeg eerst uw publieke sleutel toe via het tabblad **Instellingen**, vervolgens **SSH-sleutels** van de site: zie [SSH-sleutels Toevoegen](https://support.kapsulehost.com/nl-nl/adding-ssh-keys).

> **Note:** De Bestandenbeheerder en SFTP-accounts zijn beperkt tot uw sitemap, `~/htdocs/yourdomain.co.nz`, en `cron-logs` bevindt zich één niveau daarboven. Dat is opzettelijk: het houdt een contractant met SFTP-toegang buiten alles behalve de website. Gebruik native SSH om bij de logbestanden te komen, of leid de uitvoer om naar uw sitemap zoals hieronder getoond.

Als u de uitvoer liever ergens heeft waar de Bestandenbeheerder deze kan openen, leidt u deze zelf om:

```
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now >> ~/htdocs/yourdomain.co.nz/wp-content/cron.log 2>&1
```

`2>&1` stuurt fouten naar hetzelfde bestand als de normale uitvoer. Zonder dit gaan fouten nergens heen.

> **Warning:** Alles binnen uw sitemap kan mogelijk via het web worden opgevraagd. Plaats een omgeleid logbestand onder `wp-content` in plaats van op de hoofdmap van de site, geef het een naam die niemand zou raden, en verwijder het zodra u klaar bent met debuggen.

## Goede Praktijk

- **Spreid uw schema's.** Zes jobs die allemaal zijn ingesteld op `0 2 * * *` starten allemaal tegelijk. Spreid ze: `0 2`, `10 2`, `20 2`.
- **Gebruik niet elke minuut, tenzij u dat echt nodig heeft.** `*/5` is voor bijna alles voldoende, inclusief WordPress en WooCommerce.
- **Houd jobs kort.** Een job die langer duurt dan zijn interval, zal overlappen met de volgende uitvoering.
- **Leid de uitvoer om voor alles wat veel output genereert**, zodat één luidruchtige job uw schijf niet vult.
- **Bekijk de lijst af en toe.** Jobs die zijn achtergebleven van een verwijderde plugin blijven doorlopen.

## Probleemoplossing

**De job lijkt nooit te draaien.** Controleer eerst het pad. Open het logbestand. Bevestig daarna dat de status **Actief** is en niet **Uitgeschakeld**. Voer daarna dezelfde opdracht uit via SSH en kijk wat er gebeurt.

**"command not found" in het logbestand.** Een ontbrekend volledig pad. Gebruik `/usr/bin/php`, `/usr/bin/wp`, `/usr/bin/curl` in plaats van de kale naam.

**Toegang geweigerd.** De job draait als de systeemgebruiker van uw site. Die gebruiker moet eigenaar zijn van, of op zijn minst kunnen lezen, alles waar de opdracht mee werkt. Controleer de rechten in [De Bestandenbeheerder Gebruiken](https://support.kapsulehost.com/nl-nl/file-manager).

**WordPress-taken lopen nog steeds achter.** Bevestig dat beide onderdelen van de omschakeling actief zijn: het schema bestaat in **Instellingen**, vervolgens **Cron**, en `DISABLE_WP_CRON` is ingesteld. De sectie **WP-Cron** op het tabblad **WordPress** toont de huidige status van beide.

**De job draait, maar de site is traag terwijl dit gebeurt.** Verplaats hem naar een rustiger uur, of splits het werk op in kleinere batches. Het resourcegebruik op siteniveau is zichtbaar onder **Prestaties**: zie [Website-snelheid Verbeteren](https://support.kapsulehost.com/nl-nl/website-speed).

**Een job stopte met werken na een plugin-update.** Het pad van de opdracht is mogelijk veranderd. Controleer het logbestand en werk daarna de opdracht in de takenlijst bij door de oude job te verwijderen en een gecorrigeerde job toe te voegen.
