wp-cron.php Imprimer

  • 0

 

Le fichier wp-cron.php de WordPress est un script qui permet d'exécuter des tâches planifiées de manière récurrente, comme la publication de billets programmés ou la vérification de mises à jour. Par défaut, WordPress utilise une méthode appelée "cron par évènement" pour exécuter ces tâches, ce qui signifie qu'un appel à wp-cron.php est généré chaque fois qu'un utilisateur accède à votre site.

Cette méthode peut poser des problèmes si votre site a un trafic élevé, car elle peut entraîner un surchargement de la base de données et de vos serveurs. De plus, si vous avez plusieurs sites hébergés sur le même serveur, cela peut entraîner des conflits d'exécution de wp-cron.php si plusieurs sites tentent d'exécuter le script en même temps.

Pour éviter ces problèmes, il est recommandé de désactiver la "cron par évènement" de WordPress et d'utiliser plutôt une véritable tâche cron sur votre serveur pour exécuter wp-cron.php. Cela vous permet de contrôler l'exécution du script de manière plus précise, et d'éviter les conflits d'exécution sur les sites hébergés sur le même serveur.

Pour désactiver la "cron par évènement" de WordPress et utiliser une tâche cron à la place, vous pouvez ajouter la ligne suivante à votre fichier de configuration WordPress (généralement wp-config.php) :

 
define('DISABLE_WP_CRON', true);

Ensuite, vous pouvez configurer une tâche cron sur votre serveur pour exécuter wp-cron.php selon un horaire défini. Par exemple, vous pouvez utiliser la commande suivante pour exécuter wp-cron.php toutes les heures :

 
0 * * * * /usr/bin/php /chemin/vers/wp-cron.php

Il est important de noter que vous ne devez pas exécuter ce script sur tous les sites hebergé sur le même serveur pour éviter les conflits d'exécution et les surcharges de serveur.

 

Vous pouvez utiliser un script comme celui-ci pour exécuter wp-cron.php sur chaque site hébergé sur le serveur, en les appelant les uns après les autres plutôt que simultanément :

 

#!/bin/bash

# Récupération de la liste des domaines
domains=$(virtualmin list-domains --name-only --enabled)

# Création d'un fichier de rapport
report="wp-cron-report.txt"

# Pour chaque domaine
for domain in $domains
do

  if [ -e "/home/$domain/httpdocs/wp-cron.php" ]
  then

  # Récupère l'utilisateur Unix associé au domaine en cours
  username=$(/usr/sbin/virtualmin list-domains --domain $domain --user-only)

  # Exécution du fichier PHP en ligne de commande
  start_time=$(date +%s)
  result=$(su -s /bin/bash -c "/usr/bin/php7.4 /home/$domain/httpdocs/wp-cron.php" $username)
  end_time=$(date +%s)
  execution_time=$((end_time - start_time))

  # Enregistrement du résultat dans le fichier de rapport
  echo "$domain: $result (temps d'exécution : $execution_time secondes)" >> $report

  else
    echo "le domaine $domain n'a pas de wp-cron" >> $report

  fi
done

# Envoi du rapport par e-mail
mail -s "Rapport d'exécution de wp-cron.php" -a $tmp_report user@example.com <<< "Veuillez trouver ci-joint le rapport d'exécution de wp-cron.php."

 

De cette manière, vous pouvez garantir que les tâches planifiées de chaque site sont exécutées de manière fiable et en douceur, sans causer de problèmes pour les autres sites ou pour le serveur. En utilisant un script pour appeler les cron les uns après les autres, vous pouvez également enregistrer un rapport d'exécution pour chaque site, ce qui peut être utile pour surveiller l'état de vos tâches planifiées.

En résumé, désactiver la "cron par évènement" de WordPress et utiliser une tâche cron à la place peut améliorer les performances et la fiabilité de vos tâches planifiées. Cela peut également vous aider à éviter les conflits d'exécution sur les sites hébergés sur le même serveur, et à surveiller l'état de vos tâches planifiées. Utiliser un script pour appeler les cron les uns après les autres plutôt que simultanément est une bonne manière de gérer les tâches planifiées de manière efficace et fiable sur un serveur hébergeant plusieurs sites WordPress.

 

 


Cette réponse était-elle pertinente?

« Retour