Evaluación inicial sin contraseñas Presupuesto antes de intervenir Especialista responsable de principio a fin

Php Mysql Rendimiento Mantenimiento

Las acciones programadas WooCommerce se acumulan y dejan de procesarse

Repara backlog de Action Scheduler revisando WP-Cron, hooks fallidos, workers PHP, locks MySQL y reintentos seguros.

WooCommerce y muchas extensiones usan Action Scheduler para webhooks, suscripciones, email, limpieza y sincronización. Una cola Pending creciente significa que se crea trabajo más rápido que se completa; muchos Failed iguales indican un callback incapaz de terminar.

No borres la cola para reducir el número. Puede contener pagos, reembolsos o fulfilment que aún requieren conciliación.

Mide el backlog

En WooCommerce > Estado > Acciones programadas registra Pending, Failed, In-progress y la hora más antigua.

- edad de la pendiente más vieja
- nuevas acciones por minuto
- completadas por minuto
- hooks con más fallos
- duración media y máxima

Consulta argumentos solo con autorización; pueden contener IDs de cliente o pedido.

Confirma que se invoca el runner

WordPress activa cron con tráfico. Revisa DISABLE_WP_CRON y si existe cron real.

Usa cPanel o Plesk para llamar al sitio con PHP/HTTP soportado y frecuencia razonable. Confirma sitio y versión PHP. No ejecutes varios crons solapados sin medir concurrencia.

En multisite, el scheduler debe alcanzar la tienda donde viven las acciones. Llamar solo al sitio principal puede dejar otra cola inmóvil; revisa cada tienda.

Comprueba en los logs que cada invocación inicia realmente un runner y cuántas acciones reclama. Una respuesta HTTP 200 de wp-cron.php no prueba progreso. Compara el ID más antiguo y el recuento completado antes y después de varias ejecuciones.

Lee el primer fallo repetido

Agrupa acciones por hook y error, no abras únicamente la última. Relaciona un caso con logs PHP y del proveedor.

Una función ausente apunta a incompatibilidad; 401 a credenciales; timeout a resultado externo desconocido; deadlock a escrituras concurrentes. Corrige la causa común antes de reintentar un lote.

Comprueba workers y límites

El runner necesita procesos PHP y memoria. Si están ocupados por requests lentos, cron llega pero no avanza.

Revisa gráficos, fatals y saturación. Aumenta capacidad solo tras saber si una acción monopoliza cada worker. Divide importaciones en unidades acotadas; una acción no debería procesar todo el catálogo.

Calcula throughput necesario: nuevas acciones por minuto frente a completadas. Si la cola crece incluso sin errores, reduce el coste por tarea, ajusta lotes o añade capacidad con límites. Si solo un hook consume todo el tiempo, sepáralo para que no bloquee pagos y emails.

Revisa locks y tablas

Action Scheduler reclama y registra trabajo en MySQL. Consultas lentas, disco lleno o claims abandonados reducen throughput.

Usa métricas y herramientas oficiales compatibles con la versión. Haz backup antes de mantenimiento. No truncar tablas: el historial sirve para deduplicar, auditar y diagnosticar.

Revisa espacio, índices esperados y consultas de claims. Un disco casi lleno puede impedir escribir logs o liberar acciones aunque PHP siga respondiendo. Corrige el almacenamiento antes de reintentar, porque más runners aumentarían la presión.

Haz callbacks idempotentes

La misma acción puede repetirse después de timeout. Pago, stock y fulfilment deben reconocer una operación completada.

$order = wc_get_order( $order_id );
if ( ! $order ) {
    throw new RuntimeException( 'Pedido no disponible para la tarea' );
}

Validar es solo el inicio. Guarda una referencia externa estable y consulta resultados inciertos antes de reintentar. Nunca registres secretos o payloads personales.

Recupera por lotes controlados

Concilia acciones sensibles con proveedor y estado del pedido. Corrige la raíz, ejecuta una de bajo riesgo y verifica efectos.

Procesa un lote limitado observando tasa de finalización, PHP, MySQL y límites externos. Detente ante duplicados o fallos nuevos. Archiva/cancela solo si la operación comercial es objetivamente obsoleta.

Define tamaño, pausa y criterio de parada antes de empezar. Tras cada lote compara estados externos, no solo Completed: una acción puede finalizar localmente y dejar un envío o webhook rechazado. Conserva una lista de referencias procesadas.

Evita otro bloqueo silencioso

Alerta por edad de Pending, tasa de error y crecimiento, no por el total histórico. Prueba cron tras migraciones, cambios PHP o reglas de seguridad.

Completa un pedido controlado y confirma que email, webhook, stock y tareas externas terminen una vez. El mantenimiento recurrente debe tratar la latencia de cola como salud transaccional.

ANTES DE ENVIAR LA SOLICITUD

Preguntas frecuentes.

¿Pedís contraseñas en el formulario?+

No. El formulario público nunca solicita accesos. Los datos seguros se piden únicamente después de aprobar el alcance y el presupuesto.

¿Quién revisa la incidencia?+

La solicitud llega a Jordi Ensenyat, fundador de Code Barcelona y especialista WordPress con más de 15 años de experiencia.

¿Se cambia algo antes del presupuesto?+

No. Primero se revisan los síntomas visibles y se define el alcance. La intervención empieza tras la aprobación y con una vía de vuelta preparada.

¿Trabajáis con webs en inglés y fuera de España?+

Sí. WP Repair atiende incidencias WordPress y WooCommerce en inglés y español, con servicio remoto.

Evaluar mi incidencia