Generación Automática — Tareas Cron
Mantén actualizado tu catálogo de Facebook e Instagram sin intervención manual programando el generador de feed para que se ejecute automáticamente en tu servidor.
Disponible desde v1.0.0
Descripción general
Facebook e Instagram obtienen tu catálogo de productos según su propio calendario, con una frecuencia que puede ir desde una vez por hora hasta una vez al día. Para asegurarte de que Meta siempre vea tus precios, niveles de stock y datos de producto más recientes, necesitas regenerar el feed con regularidad y de forma automática.
El módulo proporciona un panel dedicado de Generación Automática (Tareas Cron) dentro de la página de configuración del Back Office. Ofrece una URL de generación lista para usar y una ruta de script precargadas con tu clave secreta, junto con los comandos exactos para tres métodos de ejecución distintos. Copia y pega el comando que se adapte a tu entorno de alojamiento en el programador de tareas de tu servidor, establece la frecuencia y listo.
La URL de generación está protegida por una clave secreta (FPF_SECRET_KEY). Sin la clave correcta en la solicitud, el generador se niega a ejecutarse. Esto significa que la URL es segura para incluirla directamente en un comando cron aunque apunte a un endpoint público.
Cómo acceder al panel de Tareas Cron
- Ve a Módulos > Gestor de módulos y haz clic en Configurar en Facebook & Instagram Product Catalogue Feed Pro.
- Haz clic en la pestaña Generación Automática (Tareas Cron) en la navegación del módulo.
El panel muestra:
- La URL — la URL de generación HTTPS completa con tu clave secreta incluida.
- La ruta del script — la ruta del archivo en el servidor hacia
cron.phpcon la clave como argumento de consulta, para usar cuando tu panel de control solicite una ruta de archivo en lugar de una URL. - El comando — comandos de shell listos para ejecutar usando cURL, wget y PHP CLI.

Los tres comandos incluyen
>/dev/null 2>&1en la salida que se muestra en el panel. Conserva este sufijo — descarta la salida de generación para que tu servidor no llene los registros ni envíe alertas por correo en cada ejecución.
Comparativa de los tres métodos
cURL (Recomendado)
curl -l -k "https://yourstore.com/module/facebookproductsfeed/GenerateFeed?fpf_secret_key=YOURKEY" >/dev/null 2>&1
cURL es el método preferido para la mayoría de los entornos de alojamiento Linux. Sigue redirecciones HTTP (-l), omite la verificación del certificado SSL (-k) y finaliza limpiamente tras la solicitud. Como cURL realiza una solicitud HTTP, la generación se ejecuta bajo la configuración PHP del servidor web — se aplican límites de tiempo de ejecución, aunque el módulo intenta aumentarlos automáticamente al iniciarse.
Si tu feed está protegido con autenticación HTTP básica (configurada en la pestaña Protección del Feed), el panel añade automáticamente -u "usuario:contraseña" al inicio del comando.
Usa cURL cuando:
- Tu panel de control de alojamiento (cPanel, Plesk, Runcloud, etc.) disponga de un campo para el comando cron.
- Te sientas cómodo con la sintaxis estándar de cron en Linux.
- Quieras la opción más sencilla y compatible.
wget (Alternativa)
wget -O - -q -t 1 "https://yourstore.com/module/facebookproductsfeed/GenerateFeed?fpf_secret_key=YOURKEY" >/dev/null 2>&1
wget funciona de forma idéntica a cURL desde la perspectiva del módulo. Úsalo si cURL no está instalado en tu servidor o si la interfaz de tu proveedor de alojamiento ofrece una plantilla de cron basada en wget. El flag -O - redirige la salida a stdout, -q suprime la salida de progreso y -t 1 limita los intentos a uno.
PHP CLI
/usr/bin/php -q /var/www/html/modules/facebookproductsfeed/cron.php --fpf_secret_key="YOURKEY"
El panel ofrece dos variantes de PHP CLI: una que usa la ruta exacta del binario PHP detectado en tu servidor (PHP_CLI_PATH) y otra que usa el comando genérico php para entornos donde PHP está en el PATH del sistema.
PHP CLI ejecuta el generador directamente como un proceso de línea de comandos, completamente fuera de las restricciones del servidor web. No hay límite de tiempo HTTP, no hay límite de tiempo de ejecución establecido por Apache o Nginx y no existe riesgo de que el servidor web interrumpa el proceso a mitad de la generación. El generador detecta que se está ejecutando bajo CLI y ajusta las variables en consecuencia.
Usa PHP CLI cuando:
- Tu catálogo sea muy grande y la generación web supere el tiempo límite.
- Los métodos cURL o wget fallen repetidamente antes de completar el feed.
- Tu alojamiento te proporcione acceso SSH o a comandos cron.
El argumento --fpf_secret_key es obligatorio — el punto de entrada CLI lo valida de la misma manera que el endpoint HTTP.
Recomendaciones de frecuencia
Facebook actualiza su copia de tu catálogo según su propio calendario. Regenerar con más frecuencia de la que Facebook consulta no sirve de nada, pero regenerar con menos frecuencia significa que Meta puede mostrar precios desactualizados o productos sin stock. El panel del módulo resume las recomendaciones de esta manera:
| Tamaño del catálogo / comportamiento del stock | Frecuencia recomendada |
|---|---|
| Catálogo pequeño o mediano (menos de 8 minutos para generar) | Cada hora (0 * * * *) |
| Catálogo grande (más de 8 minutos) o cambios de stock poco frecuentes | Cada 3 o 6 horas (0 */3 * * * o 0 */6 * * *) |
| Catálogo principalmente estático — los productos raramente se agotan | Una vez al día (0 0 * * *) |
Consejo adicional del panel: Alinea el minuto del cron con tu tiempo de generación. Si tu feed tarda 5 minutos en generarse, programa la tarea en el minuto 50 (50 * * * *). El feed estará listo alrededor del minuto 55, ofreciéndole a Facebook un archivo actualizado cuando lo consulte a la hora en punto.
Puedes comprobar cuánto tardó tu última generación consultando la pestaña Panel tras una ejecución de generación manual.
Combinación con el modo ciclo
Si tu catálogo es tan grande que una sola solicitud no puede procesar todos los productos antes de que se alcance el límite de tiempo de ejecución del servidor, activa la generación basada en ciclos. Con el modo ciclo activo, una ejecución cron procesa un lote de productos y guarda el progreso, y la siguiente ejecución retoma donde se quedó la anterior. El feed permanece disponible en su estado anterior mientras se construye una nueva versión a lo largo de varios ciclos.
La frecuencia recomendada para el modo ciclo es cada 10–15 minutos, de modo que el catálogo completo se procese en un tiempo razonable a través de varias ejecuciones cron.
Para más detalles sobre cómo configurar el tamaño del lote y cómo funciona el modo ciclo, consulta Generación por ciclos para catálogos grandes.
Generación en múltiples tiendas
Por defecto, una sola llamada cron genera los feeds de todas tus tiendas en secuencia. Si tienes varias tiendas y quieres escalonar su generación — o aislar una tienda especialmente grande — puedes apuntar a una tienda específica añadiendo &id_shops=SHOPID a la URL, o --id_shops="SHOPID" al comando PHP CLI. El panel muestra comandos por tienda en una tabla con pestañas cuando tu instalación tiene más de una tienda configurada.
Notas importantes
- Rotación de la clave secreta: La clave secreta se deriva de la
_COOKIE_KEY_de tu tienda. No cambia a menos que reinstales el módulo o borres manualmente el valor almacenado. Si la rotas, actualiza todos tus comandos cron. - Versión del formato de URL: Las tiendas que actualicen desde versiones anteriores del módulo pueden ver un aviso de que el formato de la URL cron ha cambiado (
FPF_NEW_CORN_URL). Sigue las instrucciones del panel para actualizar los comandos guardados al formato de URL actual. - Varnish y otras cachés: El endpoint de generación envía las cabeceras
Cache-Control: no-storeyPragma: no-cache. Si utilizas un proxy inverso, asegúrate de que deja pasar estas cabeceras y no almacena en caché la respuesta de generación. - Salida: El script de generación muestra texto de progreso. Redirige siempre la salida a
/dev/null 2>&1(ya incluido en los comandos del panel) para evitar alertas por correo o acumulación de registros en tu servidor. - Alternativa para PrestaShop 1.6: En PrestaShop 1.6, el panel también muestra una sección para usar el módulo integrado Gestor de tareas Cron de PrestaShop. Es la opción más sencilla, aunque puede no ejecutarse siempre de forma fiable — comprueba el campo "última ejecución" del módulo tras la primera hora programada para confirmar que funciona.
Solución de problemas
| Problema | Solución |
|---|---|
| El feed nunca se actualiza aunque el cron se ejecute | Comprueba que la URL en tu comando cron incluya el fpf_secret_key correcto. Abre la URL en un navegador — si ves "No puedes acceder a esta página", la clave es incorrecta o falta. |
| El cron se dispara pero la generación se detiene a mitad | Cambia al método PHP CLI, que no tiene límite de tiempo HTTP. Alternativamente, activa el modo ciclo y ejecuta el cron con más frecuencia (cada 10–15 minutos). |
| El servidor envía alertas por correo en cada ejecución cron | Añade >/dev/null 2>&1 al final de tu comando cron para descartar toda la salida. |
| La URL de generación de mi antiguo comando cron dejó de funcionar | El módulo se actualizó y el formato de la URL cambió. Ve a la pestaña Generación Automática (Tareas Cron), copia la nueva URL que aparece allí y reemplaza la antigua en tu cron. |
| El comando PHP CLI falla con "archivo no encontrado" | La ruta del script que se muestra en el panel usa el directorio real del módulo en tu servidor. Verifica que la ruta no haya cambiado (por ejemplo, tras mover PrestaShop a una carpeta diferente). |
| Las credenciales de autenticación básica no aparecen en el comando | Los comandos cURL y wget que se muestran en el panel incluyen automáticamente -u "usuario:contraseña" cuando la autenticación básica está configurada en la pestaña Protección del Feed. Establece las credenciales allí primero. |
Preguntas frecuentes
¿Con qué frecuencia debo ejecutar la tarea cron?
Para la mayoría de las tiendas, una vez por hora es lo ideal. Si tu feed tarda más de 8 minutos en generarse, ejecútalo cada 3 o 6 horas. Los catálogos muy estables pueden usar una programación diaria.
¿Necesito configurar una tarea cron o puedo generar el feed manualmente?
Se recomienda encarecidamente una tarea cron para cualquier tienda en producción. La generación manual sirve para realizar pruebas, pero si olvidas regenerar, Facebook e Instagram seguirán mostrando productos desactualizados hasta que lo hagas.
¿Qué método debo usar — cURL, wget o PHP CLI?
Empieza con cURL; funciona en casi todos los entornos de alojamiento Linux estándar. Si la generación supera repetidamente el tiempo límite o falla a mitad del proceso, cambia a PHP CLI, que se ejecuta fuera de los límites de tiempo del servidor web.
¿Se puede usar la misma URL cron para varias tiendas?
Sí. Por defecto, una llamada a la URL genera los feeds de todas las tiendas. Para generar solo una tienda específica, añade &id_shops=SHOPID a la URL. El panel de Generación Automática muestra comandos individuales por tienda en una tabla cuando tienes más de una tienda.
¿Es seguro usar la URL de generación en un comando cron aunque sea públicamente accesible?
Sí. La URL solo activa la generación cuando el fpf_secret_key correcto está presente. Sin él, el endpoint sale inmediatamente. La clave no se muestra en ningún lugar de tu tienda.
¿Qué ocurre si dos ejecuciones cron se solapan?
El módulo detecta que ya hay una generación en curso (mediante un archivo progress.json) y se niega a iniciar una segunda hasta 30 segundos después de la última actividad. Esto evita feeds duplicados o corruptos.