Génération automatique — Tâches cron
Maintenez votre catalogue Facebook et Instagram à jour sans intervention manuelle en planifiant le générateur de flux pour qu'il s'exécute automatiquement sur votre serveur.
Disponible depuis la v1.0.0
Vue d'ensemble
Facebook et Instagram récupèrent votre catalogue de produits selon leur propre calendrier — de toutes les heures à une fois par jour. Pour que Meta voie toujours vos derniers prix, niveaux de stock et données produits, vous devez régénérer le flux régulièrement et automatiquement.
Le module propose un panneau dédié Génération automatique (Tâches cron) dans la page de configuration du Back Office. Il vous fournit une URL de génération et un chemin de script prêts à l'emploi, pré-remplis avec votre clé secrète, ainsi que des commandes précises pour trois méthodes d'exécution différentes. Il vous suffit de copier-coller la commande correspondant à votre environnement d'hébergement dans le planificateur de tâches de votre serveur, de définir la fréquence, et c'est terminé.
L'URL de génération est protégée par une clé secrète (FPF_SECRET_KEY). Sans la clé correcte dans la requête, le générateur refuse de s'exécuter. L'URL peut donc être placée directement dans une commande cron en toute sécurité, même si elle pointe vers un point d'accès public.
Trouver le panneau Tâches cron
- Allez dans Modules > Gestionnaire de modules et cliquez sur Configurer pour Facebook & Instagram Product Catalogue Feed Pro.
- Cliquez sur l'onglet Génération automatique (Tâches cron) dans la navigation du module.
Le panneau affiche :
- L'URL — l'URL de génération HTTPS complète avec votre clé secrète intégrée.
- Le chemin du script — le chemin serveur vers
cron.phpavec la clé en paramètre de requête, à utiliser lorsque votre panneau de contrôle demande un chemin de fichier plutôt qu'une URL. - La commande — des commandes shell prêtes à l'emploi utilisant cURL, wget et PHP CLI.

Les trois commandes incluent
>/dev/null 2>&1dans la sortie affichée dans le panneau. Conservez ce suffixe — il supprime la sortie de génération pour éviter que votre serveur ne remplisse les journaux ou n'envoie des alertes par e-mail à chaque exécution.
Comparaison des trois méthodes
cURL (Recommandé)
curl -l -k "https://votresite.com/module/facebookproductsfeed/GenerateFeed?fpf_secret_key=VOTRECLE" >/dev/null 2>&1
cURL est la méthode privilégiée pour la plupart des environnements d'hébergement Linux. Elle suit les redirections HTTP (-l), ignore la vérification du certificat SSL (-k) et se termine proprement après la requête. Comme cURL effectue une requête HTTP, la génération s'exécute sous les paramètres PHP du serveur web — les limites de temps d'exécution s'appliquent, mais le module tente de les augmenter automatiquement au démarrage.
Si votre flux est protégé par une authentification HTTP Basic (configurée dans l'onglet Protection du flux), le panneau ajoute automatiquement -u "nom_utilisateur:mot_de_passe" au début de la commande.
Utilisez cURL lorsque :
- Votre panneau de contrôle d'hébergement (cPanel, Plesk, Runcloud, etc.) dispose d'un champ de commande cron.
- Vous êtes à l'aise avec la syntaxe cron Linux standard.
- Vous souhaitez l'option la plus simple et la plus compatible.
wget (Alternative)
wget -O - -q -t 1 "https://votresite.com/module/facebookproductsfeed/GenerateFeed?fpf_secret_key=VOTRECLE" >/dev/null 2>&1
wget fonctionne de manière identique à cURL du point de vue du module. Utilisez-le si cURL n'est pas installé sur votre serveur ou si votre hébergeur propose un modèle cron basé sur wget. L'option -O - redirige la sortie vers stdout, -q supprime l'affichage de la progression, et -t 1 limite à une seule tentative.
PHP CLI
/usr/bin/php -q /var/www/html/modules/facebookproductsfeed/cron.php --fpf_secret_key="VOTRECLE"
Le panneau fournit deux variantes PHP CLI : l'une utilisant le chemin exact du binaire PHP détecté sur votre serveur (PHP_CLI_PATH), l'autre utilisant la commande générique php pour les environnements où PHP est dans le PATH système.
PHP CLI exécute le générateur directement en tant que processus en ligne de commande, totalement en dehors des contraintes du serveur web. Il n'y a ni délai d'attente HTTP, ni limite de temps d'exécution imposée par Apache ou Nginx, ni risque que le serveur web interrompe le processus en cours de génération. Le générateur détecte qu'il s'exécute en CLI et adapte ses variables en conséquence.
Utilisez PHP CLI lorsque :
- Votre catalogue est très volumineux et la génération via le web expire.
- Les méthodes cURL ou wget échouent systématiquement avant la fin du flux.
- Votre hébergement vous donne un accès SSH ou à des commandes cron.
L'argument --fpf_secret_key est obligatoire — le point d'entrée CLI le valide de la même façon que le point d'accès HTTP.
Recommandations de fréquence
Facebook actualise sa copie de votre catalogue selon son propre calendrier. Régénérer plus souvent que Facebook ne l'interroge ne sert à rien, mais régénérer moins souvent risque d'afficher des prix obsolètes ou des produits en rupture de stock. Le panneau du module résume les recommandations ainsi :
| Taille du catalogue / comportement du stock | Fréquence recommandée |
|---|---|
| Catalogue petit ou moyen (moins de 8 minutes à générer) | Toutes les heures (0 * * * *) |
| Grand catalogue (plus de 8 minutes) ou changements de stock peu fréquents | Toutes les 3 ou 6 heures (0 */3 * * * ou 0 */6 * * *) |
| Catalogue majoritairement statique — produits rarement en rupture | Une fois par jour (0 0 * * *) |
Conseil bonus du panneau : Alignez la minute du cron avec votre temps de génération. Si votre flux prend 5 minutes à générer, planifiez la tâche à la minute 50 (50 * * * *). Le flux sera terminé vers la minute 55, offrant à Facebook un fichier frais lorsqu'il consulte au début de l'heure suivante.
Vous pouvez vérifier la durée de votre dernière génération en consultant l'onglet Tableau de bord après une exécution manuelle.
Combinaison avec le mode cycle
Si votre catalogue est suffisamment volumineux pour qu'une seule requête ne puisse pas traiter tous les produits avant que la limite de temps d'exécution du serveur soit atteinte, activez la génération par cycles. Avec le mode cycle actif, une exécution cron traite un lot de produits et sauvegarde la progression, et l'exécution suivante reprend là où la précédente s'est arrêtée. Le flux reste disponible dans son état précédent pendant qu'une nouvelle version est construite progressivement sur plusieurs cycles.
La fréquence recommandée pour le mode cycle est toutes les 10 à 15 minutes, afin que le catalogue complet soit traité dans un délai raisonnable sur plusieurs déclenchements cron.
Pour tous les détails sur la configuration de la taille des lots et le fonctionnement du mode cycle, consultez Génération par cycles pour les grands catalogues.
Génération multi-boutique
Par défaut, un seul appel cron génère les flux pour toutes vos boutiques en séquence. Si vous avez plusieurs boutiques et souhaitez échelonner leur génération — ou isoler une boutique particulièrement volumineuse — vous pouvez cibler une boutique spécifique en ajoutant &id_shops=SHOPID à l'URL, ou --id_shops="SHOPID" à la commande PHP CLI. Le panneau affiche des commandes par boutique dans un tableau à onglets lorsque votre installation comprend plusieurs boutiques.
Remarques importantes
- Rotation de la clé secrète : La clé secrète est dérivée de la
_COOKIE_KEY_de votre boutique. Elle ne change pas sauf si vous réinstallez le module ou effacez manuellement la valeur stockée. Si vous la modifiez, mettez à jour toutes vos commandes cron. - Version du format d'URL : Les boutiques mettant à niveau depuis d'anciennes versions du module peuvent voir une notice indiquant que le format de l'URL cron a changé (
FPF_NEW_CORN_URL). Suivez les instructions affichées dans le panneau pour mettre à jour les commandes enregistrées vers le format d'URL actuel. - Varnish et autres caches : Le point d'accès de génération envoie les en-têtes
Cache-Control: no-storeetPragma: no-cache. Si vous utilisez un proxy inverse, assurez-vous qu'il transmet ces en-têtes et ne met pas en cache la réponse de génération. - Sortie : Le script de génération affiche un texte de progression. Redirigez toujours la sortie vers
/dev/null 2>&1(déjà inclus dans les commandes du panneau) pour éviter les alertes par e-mail ou l'accumulation de journaux sur votre serveur. - Alternative PrestaShop 1.6 : Sur PrestaShop 1.6, le panneau affiche également une section pour utiliser le module intégré Gestionnaire de tâches cron de PrestaShop. C'est l'option la plus simple, mais elle n'est pas toujours fiable — vérifiez le champ « dernière exécution » du module après la première heure planifiée pour confirmer qu'il fonctionne.
Dépannage
| Problème | Solution |
|---|---|
| Le flux ne se met jamais à jour malgré l'exécution du cron | Vérifiez que l'URL dans votre commande cron contient le bon fpf_secret_key. Ouvrez l'URL dans un navigateur — si vous voyez « Vous ne pouvez pas accéder à cette page », la clé est incorrecte ou manquante. |
| Le cron se déclenche mais la génération s'arrête à mi-chemin | Passez à la méthode PHP CLI, qui n'a pas de délai d'attente HTTP. Vous pouvez également activer le mode cycle et exécuter le cron plus fréquemment (toutes les 10 à 15 minutes). |
| Le serveur envoie des alertes par e-mail à chaque exécution cron | Ajoutez >/dev/null 2>&1 à la fin de votre commande cron pour supprimer toute sortie. |
| L'URL de génération dans mon ancienne commande cron ne fonctionne plus | Le module a été mis à jour et le format de l'URL a changé. Allez dans l'onglet Génération automatique (Tâches cron), copiez la nouvelle URL affichée et remplacez l'ancienne dans votre cron. |
| La commande PHP CLI échoue avec « fichier introuvable » | Le chemin du script affiché dans le panneau utilise le répertoire réel du module sur votre serveur. Vérifiez que le chemin n'a pas changé (par exemple, après avoir déplacé PrestaShop dans un autre dossier). |
| Les identifiants d'authentification Basic ne sont pas inclus dans la commande | Les commandes cURL et wget affichées dans le panneau incluent automatiquement -u "utilisateur:mot_de_passe" lorsque l'authentification Basic est configurée dans l'onglet Protection du flux. Définissez d'abord les identifiants à cet endroit. |
Questions fréquentes
À quelle fréquence dois-je exécuter la tâche cron ?
Pour la plupart des boutiques, une fois par heure est idéal. Si votre flux prend plus de 8 minutes à générer, exécutez-le toutes les 3 ou 6 heures. Les catalogues très stables peuvent utiliser une planification quotidienne.
Dois-je configurer une tâche cron, ou puis-je générer le flux manuellement ?
Une tâche cron est fortement recommandée pour toute boutique en production. La génération manuelle fonctionne pour les tests, mais si vous oubliez de régénérer, Facebook et Instagram continueront d'afficher des produits obsolètes jusqu'à ce que vous le fassiez.
Quelle méthode utiliser — cURL, wget ou PHP CLI ?
Commencez par cURL ; elle fonctionne sur presque tous les environnements d'hébergement Linux standard. Si la génération expire systématiquement ou échoue en cours de route, passez à PHP CLI, qui s'exécute en dehors des limites de temps du serveur web.
La même URL cron peut-elle être utilisée pour plusieurs boutiques ?
Oui. Par défaut, un appel d'URL génère les flux pour toutes les boutiques. Pour générer uniquement une boutique spécifique, ajoutez &id_shops=SHOPID à l'URL. Le panneau Génération automatique affiche des commandes individuelles par boutique dans un tableau lorsque vous avez plusieurs boutiques.
L'URL de génération est-elle sécurisée dans une commande cron, même si elle est accessible publiquement ?
Oui. L'URL déclenche la génération uniquement lorsque le fpf_secret_key correct est présent. Sans lui, le point d'accès se ferme immédiatement. La clé n'est affichée nulle part sur votre vitrine.
Que se passe-t-il si deux exécutions cron se chevauchent ?
Le module détecte qu'une génération est déjà en cours (via un fichier progress.json) et refuse d'en démarrer une seconde jusqu'à 30 secondes après la dernière activité. Cela évite les flux en double ou corrompus.