HUSKY - Product Filter for WooCommerce

Mode Turbo HUSKY : pourquoi les mises à jour automatiques Cron échouent (et comment les corriger)

Le problème

Les utilisateurs rapportent que la régénération automatique des fichiers du Turbo Mode de WOOF ne fonctionne pas de manière fiable :

Symptômes :

  • Mode Turbo activé avec la planification ”Daily cron”
  • Le cron job WordPress woof_turbo_do_recreate_file n'est pas créé
  • La génération manuelle de fichiers fonctionne parfaitement
  • Les mises à jour automatiques génèrent des fichiers partiels/vides
  • La régénération de fichiers semble ne jamais se terminer

Impact :

  • Des compteurs de filtres obsolètes affichés aux clients
  • Mauvaise expérience utilisateur (voir des produits qui n'existent pas)
  • Intervention manuelle requise quotidiennement

Pourquoi cela se produit : deux causes profondes

1. Condition de concurrence lors du nettoyage de fichiers

Lorsque WOOF régénère le fichier turbo, il suit ce processus :

// Step 1: Clear the file
file_put_contents($turbo_file, ''); 

// Step 2: Write new data (takes time)
foreach ($products as $product) {
    // Heavy processing for each product...
    file_put_contents($turbo_file, $data, FILE_APPEND);
}

Le problème :
Si votre site a beaucoup de produits (1000+), l'étape 2 peut prendre 60 à 120 secondes. Si le max_execution_time de PHP (généralement 30 à 60 secondes) est dépassé, le script se termine en cours d'écriture, laissant le fichier vide ou partiel.

2. WordPress Cron n'est pas un vrai cron

Le cron WordPress (wp-cron.php) présente des limitations critiques :

Exécution non garantie – ne se déclenche que lorsqu'un visiteur arrive sur votre site
Peut être bloqué – les plugins de cache peuvent empêcher l'exécution
Aucune tâche longue – tué par les limites d'exécution de PHP
Minutage peu fiable – peut s'exécuter en retard ou pas du tout

Scénario concret :
Votre site reçoit du trafic principalement pendant les heures de bureau (9h – 18h). Vous planifiez la régénération turbo à 3h du matin. Résultat : Elle ne s'exécute jamais car personne ne visite à 3h du matin pour déclencher wp-cron.php.

La solution fiable : Cron côté serveur

Étape 1 : Désactiver le cron WordPress

Ajoutez dans wp-config.php (avant /* That's all, stop editing! */) :

/**
 * Disable WordPress cron - we'll use server cron instead
 */
define('DISABLE_WP_CRON', true);

Étape 2 : Ajouter une entrée de crontab serveur

Option A : Utilisation de PHP CLI (recommandé)

# Open crontab editor
crontab -e

# Add this line (runs daily at 3 AM)
0 3 * * * php /var/www/html/yoursite/wp-cron.php >/dev/null 2>&1

Option B : Utilisation de wget

# Add this line to crontab
0 3 * * * wget -q -O - https://yoursite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Option C : Utilisation de curl

# Add this line to crontab
0 3 * * * curl -s https://yoursite.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Remplacez /var/www/html/yoursite par le chemin réel de votre installation WordPress.

Étape 3 : Augmenter les limites d'exécution de PHP

Ajoutez dans wp-config.php :

/**
 * Increase limits for cron tasks (turbo file generation)
 */
@ini_set('max_execution_time', 300); // 5 minutes
@ini_set('memory_limit', '512M');    // 512 MB RAM

Ou créez .user.ini dans la racine de votre WordPress :

max_execution_time = 300
memory_limit = 512M

Résumé

Causes profondes des échecs du cron turbo :

  1. Le cron WordPress n'est pas fiable (dépendant du trafic)
  2. Les limites de temps d'exécution de PHP tuent les tâches longues

 

Correction recommandée :

  1. ✅ Désactiver WP_CRON
  2. ✅ Utiliser un cron côté serveur
  3. ✅ Augmenter les limites de PHP
  4. ✅ Planifier pendant les heures de faible trafic

Résultat : Régénération automatique fiable des fichiers turbo avec des compteurs de produits précis pour vos clients.

Réf : https://pluginus.net/support/topic/woof_turbo_do_recreate_file-cron-job-is-missing/