Visser Labs – Plugins de WooCommerce

Cómo exportar tiendas WooCommerce grandes con Store Exporter Deluxe

Si tu tienda tiene miles de productos, pedidos o clientes, una exportación que funciona bien en un catálogo pequeño puede detenerse, agotar el tiempo de espera o finalizar sin ningún archivo en uno más grande. Rara vez es un fallo del propio Store Exporter Deluxe. Casi siempre es que tu servidor se está quedando sin la memoria PHP o el tiempo de ejecución que se le permite para una sola solicitud.

Quick Export ya divide cada exportación en lotes, por lo que no intenta procesar todo tu catálogo de una vez. Aun así, una tienda lo suficientemente grande puede necesitar un poco más de margen PHP, y ayuda saber dónde buscar cuando una exportación no finaliza. Este artículo cubre cómo funciona la división en lotes, qué configuraciones de PHP son las más importantes y cómo usar el Registro de auditoría y los registros de WooCommerce para averiguar por qué se detuvo una exportación.

Prerrequisitos

RequisitoDetalles
ComplementoStore Exporter Deluxe está activo y tiene licencia
WooCommerceActivo, ya que las exportaciones extraen sus datos de tu tienda WooCommerce
Acceso al hostingCapacidad para cambiar tu memory_limit y max_execution_time de PHP, o un host al que puedas pedir que los aumente
Acceso de administradorUna cuenta con acceso al panel de administración de WordPress

Cómo funciona la división en lotes

Quick Export nunca carga todo tu catálogo en memoria a la vez. En su lugar, divide los registros que estás exportando en lotes de 100 por defecto, y luego procesa un lote por solicitud. Así, una exportación de 5.000 productos se ejecuta como 50 lotes separados en lugar de una consulta enorme, lo que mantiene el uso de memoria predecible sin importar cuán grande crezca tu tienda. El progreso de cada lote se guarda a medida que se completa, por lo que si estás observando una ejecución de Quick Export, la barra de progreso que ves aumenta un lote a la vez en lugar de esperar a que finalice toda la exportación antes de mostrar algo. Las Exportaciones Programadas funcionan de manera diferente. Consulta La exportación programada no es una solución para errores de memoria o límite de tiempo a continuación.

Quick Export: Cada lote de Quick Export es su propia solicitud, y cada lote se ejecuta bajo el memory_limit y max_execution_time normales de PHP de tu servidor. El plugin no aumenta estos límites para un lote, y la configuración de Script Timeout no los cambia. Por lo tanto, para Quick Export, las dos cosas que ayudan son un Tamaño de lote más pequeño (abajo) y límites de PHP más altos en tu host. Si las exportaciones se detienen con errores de memoria, o se detienen consistentemente después de aproximadamente la misma cantidad de tiempo, pídele a tu host que aumente memory_limit y max_execution_time en la configuración de PHP de tu servidor.

Exportaciones programadas: Cuando una Exportación programada se inicia, Store Exporter Deluxe pide a PHP que aumente su límite de memoria a WP_MAX_MEMORY_LIMIT de su sitio y aplica la configuración de Tiempo de espera de script como límite de tiempo de ejecución. WordPress establece WP_MAX_MEMORY_LIMIT en 256 MB por defecto, muy por encima del mínimo del plugin de 64 MB. Dicho esto, muchos hosts bloquean estas anulaciones en tiempo de ejecución y aplican sus propios límites estrictos independientemente de lo que solicite el plugin. Si una Exportación programada grande aún se detiene, pida a su host que aumente memory_limit y max_execution_time directamente en la configuración PHP de su servidor.

Tiempo de espera de script: Verifique Ajustes → General → Tiempo de espera de script antes de una Exportación programada grande. Viene por defecto como Ilimitado. Si se ha cambiado a 10 minutos, 30 minutos o 1 hora, una Exportación programada que se ejecuta más tiempo se detiene al alcanzar ese límite. Restablezca a Ilimitado antes de ejecutar una Exportación programada grande. Esta configuración no afecta a los lotes de Exportación rápida.

Para Exportación rápida, reducir el tamaño del lote (abajo) es la configuración principal que usted controla. Un lote más pequeño necesita menos memoria y tiempo por solicitud, lo que a menudo permite que una exportación grande se complete incluso en un servidor con limitaciones estrictas.

Ajuste del tamaño del lote para exportaciones muy grandes

  1. Abre WooCommerce → Store Export desde el menú de administración de WordPress.
  2. Haga clic en Exportación rápida en la barra lateral.
  3. En el paso Seleccionar tipo de exportación, elija qué desea exportar.
  4. Continúe a través de Campos de exportación (y Filtros y ordenación, si aparece para ese tipo) para llegar al paso Opciones de exportación.
  5. En Configuración de lotes, introduzca un número en el campo Tamaño del lote. Está vacío por defecto, lo que utiliza el valor incorporado del plugin de 100 registros por lote.

Reducir el Tamaño del lote (por ejemplo, a 25 o 50) hace que cada solicitud de lote individual sea más ligera en memoria y más rápida de finalizar, lo que ayuda en un servidor con un memory_limit o max_execution_time bajo. La contrapartida es un mayor número de lotes en general, por lo que la exportación completa requiere más solicitudes para completarse. No hay un mínimo fijo, por lo que vale la pena probar un valor más pequeño si sus exportaciones de tamaño predeterminado son las que agotan el tiempo de espera.

El paso Opciones de Exportación de Exportación Rápida mostrando la sección Configuración de Lotes, con el campo Tamaño de Lote establecido en 25

Uso del registro de auditoría para comprobar una exportación grande

Store Exporter Deluxe mantiene un registro de cada ejecución de exportación en su Registro de auditoría, disponible en la barra lateral en WooCommerce → Exportación de tienda. Cada entrada muestra el tipo de exportación, qué la desencadenó, su estado y las marcas de tiempo.

La página Registro de Auditoría listando las ejecuciones de exportación recientes con sus columnas de tipo, desencadenante, estado, nivel y duración

Haga clic en una entrada para expandirla. Si la ejecución muestra Fallida, la vista expandida incluye el mensaje de error.

Una entrada expandida del Registro de Auditoría con el estado Fallido, mostrando el cuadro Error con el mensaje de fallo

Un error de memoria o de tiempo de espera funciona de manera diferente. Cuando PHP se queda sin memoria o tiempo, detiene la exportación de inmediato, antes de que el plugin pueda registrar nada. La entrada permanece en En ejecución sin ningún mensaje de error. Para confirmar lo que sucedió, ve a WooCommerce → Estado → Registros y busca un registro con la fuente errores-fatales, o pide a tu proveedor de alojamiento el registro de errores de PHP.

El Registro de auditoría está activado por defecto. Si falta en tu barra lateral, alguien ha desactivado el interruptor Activar registro de auditoría en Ajustes → Registro de auditoría.

Esa misma sección Ajustes → Registro de auditoría también controla cuántos detalles captura cada entrada, configurado por separado para Exportaciones rápidas y Exportaciones programadas. El nivel predeterminado Estándar ya registra la Duración. Cambia una fuente a Detallado para capturar también el Uso máximo de memoria.

El nivel de registro de Exportaciones Rápidas establecido en Detallado

Esto vale la pena activarlo mientras optimizas una exportación grande, ya que te dice qué tan cerca estuvo cada ejecución completada de tu memory_limit y cuánto tiempo tomó. Eso te muestra cuánto margen queda antes de que una exportación más grande alcance el límite.

La lista de campos del nivel Detallado mostrando las casillas Duración y Uso Máximo de Memoria habilitadas

La exportación programada no es una solución para errores de memoria o de tiempo de espera.

Una exportación programada no agrupa registros como lo hace la exportación rápida. Procesa todo el conjunto de datos como un único trabajo en segundo plano a través de Action Scheduler. El plugin solicita más memoria a PHP y aplica Tiempo de espera de script cuando comienza la ejecución, pero si tu proveedor de alojamiento bloquea esas anulaciones, el trabajo aún se ejecuta bajo los límites de tu proveedor. Como un trabajo no agrupado, típicamente necesita más memoria que una exportación rápida agrupada, no menos. No hay campo de Tamaño de lote en el formulario de Exportación programada porque no hay nada que agrupar.

Lo que una exportación programada evita es la dependencia de la pestaña del navegador: dado que se ejecuta como un trabajo en segundo plano, no está ligada a que la pestaña de tu navegador permanezca abierta ni a cuánto tiempo se permite que se ejecute una solicitud de página en tu navegador. Si una exportación rápida se detiene porque no puedes mantener la pestaña abierta el tiempo suficiente, una exportación programada resuelve ese problema específico. Si se detiene por memoria o tiempo de ejecución, reduce el Tamaño del lote o aumenta tus límites de PHP en su lugar. Para obtener instrucciones detalladas, consulta Cómo programar exportaciones en Store Exporter Deluxe.

Solución de problemas

Una exportación rápida se detiene o nunca finaliza.
Comprueba primero la entrada del Registro de auditoría para esa ejecución. Si todavía muestra En ejecución mucho después de que la exportación se detuviera, sucedieron dos cosas. PHP alcanzó su límite de memoria o tiempo (consulta Una exportación falla con un error del servidor a continuación para confirmarlo), o la pestaña del navegador perdió su conexión a mitad de camino. Después de una parada como esta, el plugin todavía trata la exportación como en ejecución hasta por 30 minutos, por lo que una nueva Exportación Rápida muestra “Ya se está ejecutando una exportación”. Antes de volver a intentarlo, ve a Ajustes → Avanzado, busca Borrar transitorio de exportación en Mantenimiento y haz clic en Borrar. Luego inténtalo de nuevo con un Tamaño de lote más pequeño, y mantén la pestaña abierta y activa hasta que la exportación se complete en lugar de alejarte de ella durante un período prolongado.
Una exportación falla con un error del servidor
Un error del servidor durante una exportación grande generalmente significa que PHP alcanzó su memory_limit o max_execution_time a mitad de lote. En ese caso, la entrada correspondiente del Registro de auditoría permanece en En ejecución sin mensaje de error, porque PHP se detiene antes de que el plugin pueda registrar uno. Para confirmarlo, ve a WooCommerce → Estado → Registros y abre el registro con la fuente errores-fatales, o pide a tu proveedor que te proporcione el registro de errores de PHP. Una línea que comience con “Allowed memory size of” o “Maximum execution time of” lo confirma. Si la entrada muestra Fallido en su lugar, expándela para leer el mensaje de error.

Si se trataba de una Exportación Rápida, antes de volver a intentarlo, ve a Ajustes → Avanzado, busca Borrar transitorio de exportación en Mantenimiento y haz clic en Borrar. Si omites este paso, la próxima Exportación Rápida mostrará “Ya se está ejecutando una exportación” durante un máximo de 30 minutos. Luego reduce el Tamaño de lote e inténtalo de nuevo. Cada lote se ejecuta bajo los límites de PHP de tu servidor, así que pide a tu proveedor que aumente ambas configuraciones de PHP si el problema continúa. Si esto sucede en una Exportación Programada, también verifica que Ajustes → General → Tiempo de espera de script esté configurado en Ilimitado.
Un catálogo grande todavía excede el tiempo de espera con un tamaño de lote pequeño
Una Exportación Programada no ayudará aquí, ya que ejecuta toda la exportación como un solo trabajo sin lotes y necesita más memoria y tiempo que la Exportación Rápida, no menos. Haz clic en Borrar junto a Borrar transitorio de exportación (Ajustes → Avanzado, en Mantenimiento) como se describió anteriormente, luego reduce aún más el Tamaño de lote. Cada lote se ejecuta bajo los límites de PHP de tu servidor, así que si la exportación aún no se puede completar, pide a tu proveedor que aumente directamente memory_limit y max_execution_time en el servidor.

Preguntas Frecuentes

¿Cuál es un buen tamaño de lote para empezar para una tienda grande?
No hay un número único correcto, ya que depende de los límites de memoria y tiempo de su servidor. Empiece con el valor predeterminado de 100. Si las exportaciones agotan el tiempo de espera, pruebe con 50, luego con 25, hasta que encuentre un tamaño que se complete de manera consistente.
¿Ralentiza el tamaño de lote más pequeño toda la exportación?
Puede añadir una pequeña cantidad de sobrecarga, ya que más lotes significan más solicitudes individuales. Pero un tamaño de lote más pequeño que realmente se completa es más rápido en la práctica que uno más grande que agota el tiempo de espera y tiene que reiniciarse.
¿Evitará la Exportación Programada los tiempos de espera por completo?
No. Elimina la dependencia de la pestaña del navegador que tiene una Exportación Rápida, pero se ejecuta como un único trabajo sin lotes. Si su host bloquea las anulaciones de memoria y tiempo del plugin, el trabajo aún debe completarse dentro de memory_limit y max_execution_time de su host, sin una configuración de Tamaño de Lote a la que recurrir. Una Exportación Programada puede ser en realidad más propensa a agotar el tiempo de espera en un catálogo muy grande que una Exportación Rápida con un tamaño de lote pequeño.

¿Necesitas más ayuda?

Si está utilizando Store Exporter Deluxe y una exportación grande aún no se completa después de probar los pasos anteriores, abra un ticket de soporte y nuestro equipo le ayudará a ponerlo en marcha.

Si estás usando el plugin gratuito Store Exporter, pregunta en el foro de soporte de WordPress.org y nuestro equipo te responderá allí.

¿Fue útil este artículo?

Artículos relacionados

Recursos y ayuda