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_filen'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 :
- Le cron WordPress n'est pas fiable (dépendant du trafic)
- Les limites de temps d'exécution de PHP tuent les tâches longues
Correction recommandée :
- ✅ Désactiver WP_CRON
- ✅ Utiliser un cron côté serveur
- ✅ Augmenter les limites de PHP
- ✅ 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/