Saltar al contenido principal

Opciones de generación — Formato de salida y cURL

La pestaña Opciones de generación controla cómo se formatea tu feed de productos y cómo el módulo activa el proceso de generación en segundo plano mediante cURL. La mayoría de las tiendas funcionan bien con los valores predeterminados, pero esta pestaña es el primer lugar al que acudir cuando se diagnostican fallos de generación o se trabaja con restricciones del servidor.

nota

Disponible desde la v2.0.0

Descripción general

Cuando guardas y generas tu feed, el módulo realiza una solicitud HTTP interna (mediante cURL) a la URL de generación del feed de tu tienda. Esta llamada interna inicia el proceso de generación en segundo plano, de modo que el navegador no agota el tiempo de espera mientras se procesan miles de productos.

Los ajustes de esta pestaña te permiten:

  • Elegir entre los formatos de salida RSS XML y ATOM XML
  • Controlar cómo cURL gestiona los tiempos de espera y los certificados SSL durante esa llamada interna
  • Activar un parámetro de aleatorización de URL que obliga a los sistemas de caché a servir datos actualizados en lugar de una respuesta en caché obsoleta

Estos son ajustes globales: se aplican a todas las tiendas en una instalación multishop.

Configuración

Ve a Módulos > Gestor de módulos > Facebook & Instagram Product Catalogue Feed Pro > Configurar y haz clic en la pestaña Opciones de generación.

Pestaña Opciones de generación con el formato de salida y los ajustes de cURL

Formato de salida

CampoValoresPredeterminadoDescripción
Selecciona el formato de salida de generaciónRSS XML, ATOM XMLATOM XMLEl dialecto XML que se escribe en el archivo del feed

RSS XML es un formato más antiguo y estricto, ampliamente compatible con todas las plataformas. ATOM XML (el predeterminado) es un formato más reciente y flexible, preferido por algunos proveedores, en especial Google. Facebook e Instagram Commerce aceptan ambos. A menos que una plataforma específica te indique que uses RSS, mantén el formato ATOM predeterminado.

Nota sobre plataformas: La mayoría de las plataformas aceptan ambos formatos, aunque las preferencias difieren. Google prefiere ATOM XML. Pinterest, en cambio, puede preferir o requerir RSS XML — consulta la documentación actual de feeds de catálogo de Pinterest si vas a enviar un feed allí. Si envías el mismo archivo de feed a varias plataformas, crea una URL de feed independiente por plataforma y configura el formato para que coincida con los requisitos de cada una.

Ajustes de cURL

CampoValoresPredeterminadoDescripción
Usar tiempo de espera de cURLActivado / DesactivadoActivadoEjecuta la generación del feed como proceso en segundo plano estableciendo un tiempo de espera de cURL muy corto
Usar SSL de cURLActivado / DesactivadoActivadoVerifica los certificados SSL en la llamada interna de cURL

Usar tiempo de espera de cURL es el ajuste clave que activa la generación en segundo plano. Cuando está activado, el módulo lanza una solicitud cURL interna con un tiempo de espera de 1 segundo. La solicitud inicia el proceso de generación y luego se desconecta deliberadamente; la generación continúa ejecutándose en el servidor sin mantener el navegador en espera. Si tu feed deja de generarse de inmediato con cero o muy pocos productos, este es el primer ajuste que debes desactivar.

Usar SSL de cURL controla si la llamada interna de cURL valida el certificado SSL de tu tienda. Desactívalo solo si ves errores relacionados con certificados en tu registro de errores PHP o si ejecutas el módulo en un servidor de desarrollo con un certificado autofirmado.

Cuándo desactivar el tiempo de espera de cURL: Si tu feed se detiene al principio y el registro de errores muestra un error de cURL o un mensaje de conexión rechazada, desactiva esta opción. La generación se ejecutará entonces de forma síncrona dentro de la solicitud PHP en lugar de como proceso en segundo plano desconectado.

Cuándo desactivar el SSL de cURL: Desactívalo solo si tu servidor tiene un certificado SSL mal configurado o autofirmado y ves errores de verificación SSL. En una tienda en producción con un certificado válido, mantenlo activado.

Ajustes relacionados con la caché

CampoValoresPredeterminadoDescripción
Aleatorización de generaciónActivado / DesactivadoDesactivadoAñade un parámetro aleatorio único a cada llamada de URL de generación

Cuando la Aleatorización de generación está activada, cada solicitud cURL que realiza el módulo — incluidas las llamadas de continuación de ciclo — añade un parámetro randomize con un valor único. La mayoría de los proxies inversos (Varnish, microcaché de Nginx, cachés de borde de CDN) usan la URL completa como clave de caché. Sin este parámetro, puede servirse una respuesta en caché de una generación anterior en lugar de activar realmente una nueva ejecución de generación.

Activa este ajuste si:

  • Tu tienda se encuentra detrás de una capa de caché (Varnish, Cloudflare, una CDN)
  • Sospechas que el feed no se actualiza aunque el cron se ejecute correctamente
  • Tu proveedor de hosting te informó de que las URL dinámicas están siendo cacheadas

Cómo funciona

Generación en segundo plano mediante cURL

Cuando activas una generación de feed (manualmente o mediante cron), el módulo llama internamente a su propia URL de generación usando cURL. La URL de generación tiene este aspecto:

https://yourstore.com/module/facebookproductsfeed/GenerateFeed?fpf_secret_key=...

Con Usar tiempo de espera de cURL activado, el tiempo de espera de conexión se establece en 1 segundo y el tiempo de espera total también es de 1 segundo. Esto hace que la llamada cURL "falle" inmediatamente desde la perspectiva del llamante, pero el proceso PHP en el servidor continúa ejecutándose y escribe el archivo del feed. Esta es la técnica estándar para tareas en segundo plano de tipo fire-and-forget en entornos PHP que no admiten procesos en segundo plano reales.

Con Usar tiempo de espera de cURL desactivado, la llamada cURL espera a que se complete la generación antes de devolver el control. Esto es fiable en servidores con valores generosos de max_execution_time, pero bloqueará el navegador o el llamante del cron durante toda la duración de la generación.

Formato de URL de cron v2

Si actualizaste desde una versión anterior a la 2.2.6, es posible que veas un aviso en el Back Office indicando que la URL de generación ha cambiado. El indicador FPF_NEW_CORN_URL se establece durante la actualización para activar un banner informativo único que muestra el formato de URL de cron actualizado mediante la ruta de módulo más limpia:

https://yourstore.com/module/facebookproductsfeed/GenerateFeed?fpf_secret_key=...

El formato anterior usaba una ruta directa a cron.php. El nuevo formato es gestionado por la capa de enrutamiento de PrestaShop y funciona de forma más fiable en distintas configuraciones de servidor. Una vez que reconoces el aviso en el Back Office y actualizas tu cron job a la nueva URL, el banner desaparece. La pestaña Generación automática (Cron Jobs) siempre muestra la URL correcta y actualizada para tu tienda.

Parámetro aleatorio durante la continuación de ciclo

Cuando la generación basada en ciclos está activa (tu catálogo es lo suficientemente grande como para requerir varios ciclos), cada solicitud de continuación lleva el parámetro randomize cuando la Aleatorización de generación está activada. Esto garantiza que cada llamada de ciclo omita la caché de forma independiente, no solo la primera solicitud. Sin esto, una capa de caché podría interceptar una solicitud de continuación, devolver una respuesta en caché de "generación en curso" y detener silenciosamente el proceso de varios ciclos.

Ejemplos de uso

Ejemplo: El feed deja de generar con 0 productos en un hosting compartido

Tu feed genera 0 productos y el Dashboard muestra que la última generación se completó al instante. Ve a Opciones de generación, establece Usar tiempo de espera de cURL en Desactivado, guarda y activa una generación manual. El módulo esperará ahora a que la generación se complete de forma síncrona. Una vez que la generación funcione, comprueba si tu hosting permite solicitudes PHP de larga duración y considera configurar un cron job mediante CLI.

Ejemplo: El feed no se actualiza aunque el cron se ejecuta

Tu cron se ejecuta cada hora, pero las marcas de tiempo del feed no cambian. Tu tienda usa Varnish. Ve a Opciones de generación, activa Aleatorización de generación, guarda. La próxima ejecución del cron añadirá un parámetro único a la URL de generación, omitiendo la caché de Varnish y activando una generación real.

Ejemplo: Certificado autofirmado en un servidor de pruebas

Estás probando el módulo en un servidor de staging interno con un certificado SSL autofirmado. El feed no se genera y el registro de errores muestra SSL certificate problem: unable to get local issuer certificate. Ve a Opciones de generación, desactiva Usar SSL de cURL, guarda. La generación funcionará porque la llamada interna de cURL ya no validará el certificado.

Notas importantes

  • Todos los ajustes de esta pestaña son globales: se aplican a todas las tiendas en una configuración multishop. No es posible configurar un comportamiento de cURL diferente por tienda.
  • La Aleatorización de generación lee de la configuración global independientemente del contexto de la tienda actual, porque se aplica a la propia URL de generación, no a los datos del producto.
  • El tiempo de espera corto de cURL (1 segundo) es intencional cuando Usar tiempo de espera de cURL está activado. No lo interpretes como un error — la generación continúa en el servidor después de que se interrumpe la conexión.
  • Si ejecutas la generación desde la línea de comandos (cron CLI), los ajustes de cURL no se aplican. La generación se ejecuta directamente en PHP sin realizar una solicitud HTTP interna.

Resolución de problemas

ProblemaSolución
El feed se detiene en 0 productos de inmediatoDesactiva Usar tiempo de espera de cURL y vuelve a intentarlo. Si la generación funciona sin él, tu servidor no admite llamadas cURL fire-and-forget. Usa un cron job CLI en su lugar.
El cron de la URL de generación no se activaActiva Aleatorización de generación si tu servidor usa caché de páginas. Verifica también que la clave secreta en la URL del cron coincida con la que aparece en Protección del feed.
Error de certificado SSL en el registro PHP durante la generaciónDesactiva Usar SSL de cURL. Esto es habitual en servidores de staging con certificados autofirmados.
El banner indica "la URL de generación ha cambiado" tras la actualizaciónCopia la nueva URL desde la pestaña Generación automática (Cron Jobs) y actualiza tu cron job. El banner desaparece una vez reconocido.
El feed parece obsoleto a pesar de las ejecuciones frecuentes del cronActiva Aleatorización de generación para omitir cualquier capa de caché situada frente al endpoint de generación.

Preguntas frecuentes

Mi feed se genera correctamente cuando hago clic en 'Generar feed ahora', pero no desde el cron job. ¿Por qué?

El botón manual activa la generación directamente desde la sesión del navegador, omitiendo cURL. El cron job usa la URL de generación, que pasa por cURL. Comprueba que la URL del cron contenga la clave secreta correcta y prueba a activar la Aleatorización de generación si hay una capa de caché implicada.

¿Debo desactivar el tiempo de espera de cURL si mi catálogo tiene 50 000 productos?

No. Para catálogos grandes debes mantener Usar tiempo de espera de cURL activado, ya que permite que la generación se ejecute en segundo plano a través de varios ciclos sin bloquear. Si la generación se detiene, el problema suele estar en la configuración de ciclos, no en el tiempo de espera. Consulta la guía de Generación basada en ciclos.

¿Cuál es la diferencia entre RSS XML y ATOM XML para Facebook?

Para Facebook e Instagram Commerce, ambos formatos funcionan igual de bien. ATOM XML es el predeterminado recomendado porque es más flexible y está preferido por Google Shopping. Solo cambia a RSS XML si una herramienta de importación o plataforma específica lo requiere explícitamente.

¿La Aleatorización de generación afecta a la URL del feed que usa Facebook para descargar el catálogo?

No. El parámetro aleatorio se añade únicamente a la llamada interna de cURL que activa la generación en tu servidor. La URL del archivo de feed que usa Facebook para leer tu catálogo es independiente y nunca se modifica por este ajuste.

Desactivé el SSL de cURL y la generación funciona, pero ¿supone un riesgo de seguridad?

Supone un riesgo menor en producción porque la llamada interna de cURL omite la validación del certificado. En una tienda en producción con un certificado SSL válido deberías mantener Usar SSL de cURL activado. Si tuviste que desactivarlo en una tienda en producción, investiga por qué tu cadena de certificados está incompleta — la causa suele ser un certificado intermedio que falta en el servidor.

Funcionalidades relacionadas