> ## Documentation Index
> Fetch the complete documentation index at: https://help.onetsolutions.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Tâches planifiées (cron)

> Planifiez des tâches récurrentes sur votre hébergement web avec cron

Une tâche cron exécute une commande selon un horaire. Sur un hébergement web, les usages courants sont le planificateur d'un CMS, un script de sauvegarde ou un import périodique — tout ce qui doit se produire sans que personne ne clique.

<Info>
  **Prérequis**

  * Un service d'hébergement web chez OnetSolutions
  * L'accès à votre compte cPanel
  * La commande à exécuter, et le chemin absolu vers celle-ci
</Info>

## Créer une tâche cron

<Steps>
  <Step title="Connectez-vous à cPanel">
    Accédez à votre compte cPanel via l'espace client OnetSolutions.
  </Step>

  <Step title="Ouvrez les tâches cron">
    Dans la section Avancé, cliquez sur « Tâches Cron ».
  </Step>

  <Step title="Indiquez une adresse de notification">
    Dans « E-mail Cron », saisissez l'adresse qui recevra la sortie. Laissez-la renseignée pendant vos tests — cette sortie est ce qui vous apprend que la tâche a échoué.
  </Step>

  <Step title="Choisissez l'horaire">
    Utilisez « Paramètres courants » pour un intervalle standard, ou remplissez les cinq champs individuellement pour tout le reste.
  </Step>

  <Step title="Saisissez la commande">
    Indiquez la commande complète avec des chemins absolus, puis cliquez sur « Ajouter une nouvelle tâche Cron ».
  </Step>
</Steps>

## Comprendre l'horaire

Les cinq champs, dans l'ordre :

```
* * * * *
│ │ │ │ └── jour de la semaine (0-6, dimanche = 0)
│ │ │ └──── mois (1-12)
│ │ └────── jour du mois (1-31)
│ └──────── heure (0-23)
└────────── minute (0-59)
```

Horaires courants :

| Horaire               | Champs         | Exécution                      |
| --------------------- | -------------- | ------------------------------ |
| Toutes les 15 minutes | `*/15 * * * *` | Quatre fois par heure          |
| Toutes les heures     | `0 * * * *`    | À l'heure pile                 |
| Chaque jour à 3 h     | `0 3 * * *`    | Une fois par jour, hors pointe |
| Chaque lundi à 4 h    | `0 4 * * 1`    | Une fois par semaine           |
| Le 1er du mois à 5 h  | `0 5 1 * *`    | Une fois par mois              |

## Écrire la commande

Cron s'exécute dans un environnement minimal. Il ne connaît pas vos alias de shell, et il ne résout pas nécessairement `php` vers la version qu'utilise votre site. Employez des chemins absolus, pour l'interpréteur comme pour le script :

```bash theme={null}
/usr/local/bin/php /home/utilisateur/public_html/cron.php
```

Pour conserver un journal plutôt que de dépendre des e-mails :

```bash theme={null}
/usr/local/bin/php /home/utilisateur/public_html/cron.php >> /home/utilisateur/cron.log 2>&1
```

C'est le `2>&1` qui capture les erreurs. Sans lui, le journal enregistre la sortie réussie et laisse tomber les échecs en silence — l'inverse de ce qu'on veut.

Pour rendre une tâche silencieuse une fois qu'elle a fait ses preuves, jetez la sortie :

```bash theme={null}
/usr/local/bin/php /home/utilisateur/public_html/cron.php > /dev/null 2>&1
```

<Warning>
  N'exécutez pas une tâche chaque minute sans nécessité réelle. Les exécutions d'un script lent se chevauchent, s'empilent, consomment les ressources du compte et peuvent à elles seules faire tomber le site. Si une tâche risque de durer, faites-la sortir immédiatement quand une exécution précédente est encore active.
</Warning>

## WordPress et CMS similaires

WordPress planifie ses propres tâches via `wp-cron.php`, déclenché par le trafic des visiteurs. Sur un site peu fréquenté, les publications programmées et les sauvegardes partent donc en retard, voire pas du tout.

La correction habituelle consiste à désactiver le déclenchement par le trafic et à passer par cron :

```php theme={null}
// Dans wp-config.php
define( 'DISABLE_WP_CRON', true );
```

```bash theme={null}
# Puis une tâche cron, toutes les 15 minutes
/usr/local/bin/php /home/utilisateur/public_html/wp-cron.php > /dev/null 2>&1
```

## Dépannage

<AccordionGroup>
  <Accordion title="La tâche ne s'exécute jamais">
    Vérifiez d'abord les chemins : une commande qui fonctionne dans un terminal échoue souvent sous cron parce qu'elle s'appuyait sur votre environnement de shell. Utilisez des chemins absolus partout, interpréteur compris.
  </Accordion>

  <Accordion title="La tâche s'exécute mais ne fait rien">
    Redirigez la sortie vers un journal avec `>> /chemin/cron.log 2>&1` et relisez-le après l'exécution suivante. Un script qui échoue sur un fichier manquant ou une connexion à la base le dit à cet endroit.
  </Accordion>

  <Accordion title="Vous recevez un e-mail à chaque exécution">
    Cron envoie toute sortie par e-mail, y compris la sortie normale. Une fois la tâche éprouvée, ajoutez `> /dev/null 2>&1` pour la rendre silencieuse, ou videz le champ « E-mail Cron ».
  </Accordion>

  <Accordion title="L'horaire semble décalé d'une heure ou deux">
    Cron suit le fuseau horaire du serveur, qui n'est pas forcément le vôtre. Calculez l'horaire en heure serveur, et rappelez-vous que le passage à l'heure d'été le décale deux fois par an.
  </Accordion>
</AccordionGroup>

<Tip>
  Testez la commande à la main avant de la planifier. Une tâche qui échoue en silence à 3 h du matin est bien plus difficile à diagnostiquer que la même commande qui échoue sous vos yeux.
</Tip>
