Configuration de la tâche Cron

L'application s'appuie sur le planificateur de tâches de Laravel pour sa maintenance périodique : purge des annonces expirées, envoi des alertes de recherche, nettoyage des fichiers de cache, sauvegardes, etc. Sans la tâche Cron ci-dessous, ces tâches ne s'exécutent pas. Seuls les fichiers de cache expirés sont encore nettoyés, au fil des visites, depuis LaraClassifier v19.1.5 et JobClass v19.1.5 (voir Saturation du répertoire du cache).

Comment démarrer le planificateur ?

Ajoutez l'entrée Cron suivante à votre serveur. Elle doit s'exécuter chaque minute :

* * * * * cd /path/to/public_html && {PHP_BIN_PATH} artisan schedule:run >> /dev/null 2>&1

Pour les hébergements mutualisés (lorsque l'outil Cron n'accepte qu'un chemin de fichier), utilisez :

* * * * * {PHP_BIN_PATH} /path/to/public_html/utils/schedule-run.php >> /dev/null 2>&1

Ce Cron appelle le planificateur de commandes de Laravel chaque minute. Lorsque schedule:run est exécuté, Laravel évalue les tâches planifiées et exécute celles qui sont dues. L'exécuter chaque minute ne signifie pas que les tâches s'exécutent chaque minute : chaque tâche garde sa propre fréquence (voir le tableau ci-dessous).

  • {PHP_BIN_PATH} : le binaire PHP CLI de la version PHP de votre site, par ex. /usr/bin/php8.3, /usr/bin/php, /usr/local/bin/php. Exécutez which php en SSH pour le trouver. Sur cPanel, c'est souvent /usr/local/bin/php ou /opt/cpanel/ea-php83/root/usr/bin/php.
  • /path/to/public_html/ : remplacez ce chemin par votre chemin réel (le dossier qui contient le fichier artisan).
  • Sur cPanel : allez dans Tâches Cron, sélectionnez Une fois par minute (* * * * *) dans Paramètres communs, puis collez la commande (sans le * * * * * du début).
  • Sur Plesk : allez dans Tâches planifiées, puis ajoutez une tâche de type Exécuter une commande avec le style Cron * * * * *.
  • N'exécutez pas la tâche Cron en tant que root : le serveur web ne pourrait pas supprimer ensuite les fichiers de cache qu'elle crée. Utilisez l'utilisateur propriétaire des fichiers du site.
  • N'hésitez pas à demander plus d'informations à votre hébergeur.

Que lance le planificateur ?

Tâche Commande Fréquence Condition
Purge des annonces (archive et supprime automatiquement les annonces après expiration) listings:purge Toutes les heures Toujours
Envoi des alertes de recherche alerts:send-notifications Toutes les heures Toujours
Nettoyage des jetons de réinitialisation de mot de passe expirés auth:clear-resets Toutes les 15 minutes Toujours
Purge du cache (supprime les fichiers de cache expirés et obsolètes) expired-cache:purge Tous les jours à 5h00 Toujours
Nettoyage du cache CSS des thèmes theme:prune-cache Tous les jours à 5h15 Toujours
Vidage complet du cache des données cache:clear Tous les dimanches à 6h00 et 6h15 Sauf si désactivé (voir ci-dessous)
Vidage du cache des vues view:clear Tous les dimanches à 6h00 Uniquement si activé (voir ci-dessous)
Sauvegardes backup:run / backup:clean Selon la configuration Panneau d'administration → Paramètres → Backup
Worker de file d'attente (« poor man's queue ») queue:scheduled-work Selon la configuration File d'attente Database ou Redis, et option activée dans Panneau d'administration → Paramètres → Optimization

Les heures sont évaluées dans le fuseau horaire du site. Ces options peuvent être définies dans le fichier /.env :

  • CACHE_MANAGER_FORCE_CLEAN_UP=false : désactive le vidage complet hebdomadaire du cache des données (non recommandé). La purge quotidienne du cache continue de s'exécuter.
  • VIEW_CACHE_AUTO_CLEAN_UP=true : active le vidage hebdomadaire du cache des vues (désactivé par défaut).

REMARQUE : L'ancienne variable DISABLE_CACHE_AUTO_CLEAR n'est plus utilisée.

Comment vérifier que la tâche Cron fonctionne ?

En SSH, depuis le dossier racine du site :

  • php artisan schedule:list liste les tâches planifiées avec leur prochaine échéance.
  • php artisan schedule:run exécute les tâches dues maintenant, exactement comme le fait la tâche Cron.
  • php artisan expired-cache:purge lance immédiatement la purge du cache et indique ce qui a été supprimé.

Sans accès SSH, remplacez temporairement >> /dev/null dans la tâche Cron par >> /path/to/public_html/storage/logs/cron.log, patientez quelques minutes, puis vérifiez que ce fichier est alimenté chaque minute. Annulez la modification une fois terminé.

Comment fonctionne la commande de purge des annonces ?

Il y a 2 cas à considérer :

1. Annonces classiques

Configurez les options ci-dessous dans Panneau d'administration → Paramètres → Cron :

  • Unactivated Listings Expiration : après cette durée (en jours), les annonces non activées sont supprimées.
  • Activated Listings Expiration : après cette durée (en jours), les annonces activées sont archivées.
  • Archived Listings Expiration : après cette durée (en jours), les annonces archivées sont supprimées.
  • Manually Archived Listings Expiration : après cette durée (en jours), les annonces archivées manuellement sont supprimées.

Dans JobClass, ces options s'appellent Unactivated Ads Expiration, Activated Ads Expiration, etc.

2. Annonces Premium / Payantes

  • Après la durée du forfait définie dans Panneau d'administration → Plans → [MODIFIER] → Duration, les annonces Premium deviennent des annonces classiques.
    • La durée de publication d'un forfait gratuit actif (c.-à-d. un forfait avec 0 comme prix) remplace le paramètre Activated Listings Expiration pour toutes les annonces gratuites. Lorsque plusieurs forfaits s'appliquent à une annonce (forfaits gratuits, abonnement de l'auteur et promotion de l'annonce), la durée la plus élevée est utilisée. Voir Fonctionnement des limites des forfaits.
    • Pour les propriétaires de sites ayant installé l'add-on Offline Payment, les annonces poussées en premium (c.-à-d. les promotions manuelles depuis le panneau d'administration) n'expirent jamais. Vous devez d'abord les retirer de la mise en avant (c.-à-d. supprimer la promotion manuellement).
  • Ensuite, les règles des annonces classiques (vues au n°1) sont appliquées pour nettoyer la base de données du site.

Cet article vous a-t-il été utile ?

Merci pour votre retour !

Besoin d'aide ? Créez un ticket de support

Créer un Ticket