Documentación · Guía de integración

Configuración del Cron del Servidor

Este documento explica por qué un cron job real del servidor es la forma recomendada de ejecutar las importaciones para el plugin ADP Car Market Hub en producción, cómo se relaciona con el planificador integrado WP-Cron y qué comprobaciones operativas deben realizarse una vez que esté en funcionamiento.

Cuándo usar este documento

Use este documento si está:

  • Preparando un despliegue en producción y decidiendo cómo deben activarse las importaciones programadas.
  • Migrando de WP-Cron a un cron job del servidor porque las importaciones no son fiables en un sitio con poco tráfico.
  • Operando un hosting que recomienda o requiere DISABLE_WP_CRON por razones de rendimiento.
  • Revisando por qué las importaciones comienzan tarde, se ejecutan solo durante las horas pico o no comienzan en absoluto.

El público objetivo es un administrador de WordPress con acceso a la herramienta de cron del servidor (por ejemplo, a través de cPanel, Plesk, el panel de control del hosting o acceso por terminal a un crontab de Linux).

Descripción general

WordPress incluye un planificador integrado llamado WP-Cron. WP-Cron no se ejecuta continuamente en segundo plano; se comprueba cuando alguien solicita una página en el sitio. En un sitio con mucho tráfico esto suele ser suficiente, pero tiene algunas limitaciones bien conocidas:

  • En un sitio con poco tráfico, las tareas programadas se ejecutan tarde o no se ejecutan en absoluto porque ningún visitante activa WP-Cron.
  • WP-Cron se ejecuta dentro de una solicitud HTTP normal, por lo que comparte el límite de memoria PHP y el tiempo de ejecución de la solicitud.
  • Varios visitantes que llegan al mismo tiempo pueden competir por ejecutar la misma tarea programada, lo que resulta ineficiente incluso si el plugin evita internamente las ejecuciones duplicadas.

Por estas razones, la configuración de producción recomendada es desactivar WP-Cron y activarlo desde un cron job real del servidor. El plugin proporciona un endpoint REST dedicado y protegido por token específicamente para este propósito, de modo que el cron job active una importación directamente sin depender de un visitante.

El plugin ofrece dos modos de cron que puede elegir en Car Market Hub → Importación y límites (la tarjeta Automatización):

  • Modo WP-Cron (por defecto). La programación de WP-Cron del plugin (cada hora, cada 6 horas, dos veces al día, diariamente o personalizada con un mínimo de 15 minutos) gestiona las importaciones. Adecuado para desarrollo, evaluación y sitios pequeños con tráfico regular.
  • Modo Cron del servidor. La programación de WP-Cron se desactiva y la importación se activa mediante un cron job del servidor que llama al endpoint REST del plugin. Recomendado para producción.

En ambos modos, el trabajo de importación real lo realiza el mismo ejecutor compartido dentro del plugin; la única diferencia es qué lo activa.

Por qué se recomienda el cron del servidor en producción

  • Sincronización fiable. Un cron job del servidor se ejecuta en un horario fijo, independientemente de si alguien está visitando el sitio web en ese momento.
  • Sin penalización en el tiempo de solicitud. Las importaciones no ralentizan la carga de la página de un visitante real, ya que se ejecutan en su propio proceso PHP.
  • Uso de recursos predecible. Un cron job del servidor se ejecuta una vez por hora programada, en lugar de iniciarse de manera oportunista por cada visitante.
  • Monitoreo más sencillo. Las ejecuciones de cron dejan un registro de auditoría claro (en los logs del servicio de cron y en los logs del plugin) y se pueden combinar con comprobaciones de estado externas.
  • Compatible con hostings que limitan o desactivan WP-Cron. Algunos hostings administrados limitan la frecuencia con la que se ejecuta wp-cron.php internamente; un activador externo evita esa limitación.

El cron del servidor también se complementa bien con la cola de imágenes del plugin: un segundo cron job que llama a wp-cron.php en un intervalo corto mantiene la cola de tareas normal de WordPress (incluido el procesamiento de imágenes) funcionando a un ritmo predecible.

Requisitos previos

Antes de cambiar al cron del servidor, confirme que:

  • El plugin está instalado, activado y la conexión de la API funciona. Consulte la Configuración de Credenciales de la API y la Prueba de conexión.
  • El entorno de hosting proporciona acceso a la herramienta de cron del servidor (cron jobs de cPanel, tareas programadas de Plesk, cron del panel de control del hosting o un crontab de Linux a través de SSH).
  • El cron job puede acceder al sitio a través de HTTPS. Para la mayoría de los hostings, el comando cron se ejecuta en el mismo servidor y puede usar curl para realizar la llamada de vuelta al sitio.
  • Puede editar wp-config.php (esto es necesario para establecer DISABLE_WP_CRON).
  • Se cumplen los requisitos generales de hosting y de cron / procesamiento en segundo plano.

Instrucciones paso a paso

La tarjeta Automatización del plugin muestra la URL de activación REST exacta y comandos de ejemplo para la instalación actual. Utilice esos valores en lugar de copiar URLs de la documentación.

  1. Cambie el plugin al modo de cron del servidor. Abra Car Market Hub → Importación y límites. En la tarjeta del modo cron, seleccione Cron del servidor y guarde. El plugin ocultará los controles de programación de WP-Cron y mostrará una tarjeta de Configuración del Cron del Servidor con la URL de activación REST, el token secreto y comandos de ejemplo.
  2. Desactive el cron integrado de WordPress. Añada la siguiente línea a wp-config.php, en cualquier lugar por encima del comentario /* That's all, stop editing! */:
   define( 'DISABLE_WP_CRON', true );

Sin esta línea, tanto WP-Cron como el cron job del servidor intentarán programar importaciones, lo que resulta ineficiente incluso cuando el bloqueo interno del plugin evita ejecuciones duplicadas.

  1. Copie la URL de activación REST. La tarjeta de Configuración del Cron del Servidor muestra la URL con el formato https://<your-site>/wp-json/as24ci/v1/cron-import?token=<secret>. Utilice el botón Copiar para que la URL se copie textualmente. Trate el token como un secreto: cualquiera que lo tenga puede activar una importación.
  2. Añada el cron job de importación. En la herramienta de cron de su servidor, cree una tarea que llame a la URL de activación con la frecuencia que desee. El plugin preconfigura un ejemplo como:
   */15 * * * * curl -s "https://<your-site>/wp-json/as24ci/v1/cron-import?token=<secret>" > /dev/null

Ajuste la expresión de programación (*/15 * * * * significa cada 15 minutos) para adaptarse a las necesidades del concesionario. Las importaciones omiten los vehículos sin cambios gracias a la detección de modificaciones, por lo que las ejecuciones frecuentes suelen consumir pocos recursos.

  1. Añada un segundo cron job para mantener en funcionamiento la cola de tareas de WordPress. Debido a que DISABLE_WP_CRON también desactiva la cola utilizada por el procesador de imágenes del plugin y por otras características de WordPress, añada un segundo cron job que ejecute wp-cron.php directamente en un intervalo corto. El ejemplo del plugin utiliza la ruta absoluta de la instalación de WordPress:
   */5 * * * * php /path/to/wordpress/wp-cron.php > /dev/null 2>&1

La ruta se muestra en la tarjeta Automatización según la instalación actual de WordPress. Reemplácela con el valor que se muestra allí.

  1. Verifique con una ejecución manual. Desde una estación de trabajo, llame a la URL de activación REST una vez con curl (o péguela en un navegador). Una ejecución exitosa devuelve una respuesta JSON que describe el resultado de la importación. Un error 403 con "Invalid or missing token" significa que la URL se copió incorrectamente.
  2. Verifique en la siguiente ejecución programada. Espere a la siguiente ejecución programada del cron, luego abra Car Market Hub → Sistema y ayuda y confirme que Última ejecución de cron externa muestra una marca de tiempo reciente.

Para un estilo de autenticación alternativo que mantiene el token fuera de la URL (y, por lo tanto, fuera de los logs de acceso y listados de procesos), el endpoint también acepta una cabecera Authorization: Bearer <token>. Por ejemplo:

*/15 * * * * curl -s -H "Authorization: Bearer <secret>" "https://<your-site>/wp-json/as24ci/v1/cron-import" > /dev/null

Ambos estilos son equivalentes; se prefiere el estilo de cabecera cuando el entorno de cron admite cabeceras personalizadas.

Referencia de configuración

Los ajustes que afectan al modo de cron del servidor se encuentran en Car Market Hub → Importación y límites (tarjeta Automatización).

AjustePropósito
Modo cronCambia entre WP-Cron y Cron del servidor. En el modo Cron del servidor, la programación de WP-Cron se desactiva y se muestra la tarjeta de Configuración del Cron del Servidor.
URL de activación RESTLa URL completa a la que debe llamar el cron job del servidor. Incluye el token secreto como un parámetro de consulta. Se genera a partir de la URL del sitio actual y el token almacenado.
Token secretoUn token aleatorio de 32 caracteres que autentica el activador REST. Se genera automáticamente en el primer uso. Utilice el botón Regenerar token para emitir uno nuevo (el cron job existente deberá actualizarse con la nueva URL).
Comandos cron de ejemploComandos de ejemplo preconfigurados que utilizan la URL de activación actual y la ruta absoluta a wp-cron.php. Utilice los botones Copiar para copiarlos textualmente.
Máx. de vehículos por ejecución de cronLimita cuántos vehículos procesará una sola ejecución de importación. 0 significa sin límite. Útil como límite de seguridad en hostings compartidos.
Modo de cola de imágenesCuando está activado, las importaciones programadas descargan solo la primera imagen por vehículo de forma inmediata y encolan el resto para su procesamiento asíncrono. Recomendado en producción.

Notas operativas

  • Un solo planificador a la vez. No ejecute el modo WP-Cron y el cron del servidor en paralelo. Cambiar a Cron del servidor en el plugin desactiva la programación de WP-Cron; añadir DISABLE_WP_CRON a wp-config.php completa el proceso al evitar que WordPress ejecute su cola de cron desde las solicitudes del front-end.
  • El ejecutor compartido. El endpoint REST, el hook de WP-Cron y el botón de administración Activar ahora delegan en el mismo ejecutor de importación dentro del plugin. No existe una "ruta de importación de cron del servidor" separada con un comportamiento diferente.
  • Seguridad de concurrencia. El ejecutor utiliza un bloqueo interno basado en transitorios para evitar que se ejecuten dos importaciones al mismo tiempo. Incluso si un cron job se solapa, la segunda ejecución se interrumpe.
  • Confidencialidad del token. El token de cron otorga el derecho de activar una importación. Trátelo como un secreto. Evite pegar URLs de activación completas en capturas de pantalla o tickets; oculte la parte token=... antes de compartirlas.
  • Rotación de tokens. Utilice Regenerar token siempre que sospeche que el token ha quedado expuesto, o como parte de una rotación periódica. Después de la regeneración, actualice cada cron job que utilice la URL; la URL anterior será rechazada.
  • Ubicación del endpoint. El endpoint REST es la URL REST estándar de WordPress …/wp-json/as24ci/v1/cron-import. Si la URL del sitio de WordPress cambia (migración a HTTPS, cambio de dominio, traslado multisitio), actualice el cron job en consecuencia.
  • Latido externo. Cualquier solicitud al sitio que incluya ?as24ci_cron=1 registra una marca de tiempo que la pestaña Sistema y ayuda utiliza para confirmar que un planificador externo está activo. Esto es puramente informativo y no activa una importación por sí mismo.
  • Trabajo complementario de la cola de imágenes. Cuando las imágenes se encolan durante las importaciones programadas, la cola se procesa mediante la cola de tareas de WordPress. Si desactivó WP-Cron, el segundo cron job que llama a wp-cron.php es lo que mantiene esa cola en movimiento.
  • No dependa de pruebas basadas en el navegador. Pegar la URL de activación en un navegador funciona para la verificación, pero no debe usarse como el activador real, ya que eso dependería de que alguien mantenga un navegador abierto.

Comprobaciones operativas después de la configuración

Realice estas comprobaciones una vez después de cambiar al modo de cron del servidor, y nuevamente después de cualquier cambio importante (migración de hosting, cambio de URL, regeneración de tokens):

  1. El servicio de cron está activado. Confirme que la herramienta de cron del hosting está activa y que la cuenta de usuario que ejecuta la tarea tiene permiso para ejecutar el comando.
  2. El comando programado es correcto. La expresión de programación coincide con la frecuencia deseada, la URL coincide con el valor mostrado en la tarjeta Automatización y el segundo trabajo que llama a wp-cron.php existe.
  3. DISABLE_WP_CRON está definido. La pestaña Sistema y ayuda confirma que la constante está establecida cuando se encuentra en el modo de cron del servidor.
  4. La última ejecución de cron externa es reciente. La pestaña Sistema y ayuda muestra una marca de tiempo de Última ejecución de cron externa dentro del intervalo esperado.
  5. La última ejecución de importación es reciente. El widget del escritorio y la pestaña Sistema y ayuda muestran actividad reciente del importador.
  6. Los logs no muestran fallos de autenticación repetidos. Un patrón de respuestas 403 en los logs significa que el cron job está utilizando un token caducado o incorrecto.
  7. La cola de imágenes se está vaciando. La pestaña Importación y límites muestra que la cola de imágenes se está procesando (o está vacía).
  8. Monitor externo opcional. Configure un monitor de tiempo de actividad o una alerta a nivel de hosting que le notifique si el trabajo de importación deja de ejecutarse.

Verifique estas comprobaciones con la versión actual del plugin antes de publicar instrucciones dirigidas al cliente, ya que las etiquetas de la interfaz de usuario pueden evolucionar entre versiones.


Resolución de problemas

SíntomaCausa probableQué comprobar
El cron job se ejecuta pero la respuesta es 403 con "Invalid or missing token".El token en la URL es incorrecto, contiene espacios en blanco o se regeneró después de crear el cron job.Vuelva a copiar la URL de la tarjeta de Automatización y actualice el comando cron.
El cron job se ejecuta pero la respuesta es 403 con "Cron token not configured".El token aún no se ha generado.Abra la tarjeta de Automatización para generar automáticamente un token, luego copie la nueva URL.
El cron job se ejecuta correctamente, pero la pestaña de Sistema y Ayuda aún no muestra ninguna ejecución externa reciente.El servicio cron está llamando a un host diferente (por ejemplo, HTTP en lugar de HTTPS, o www. frente al nombre de host canónico) y la solicitud se está redirigiendo fuera de WordPress.Utilice la URL exacta que se muestra en la tarjeta de Automatización. Confirme que el servicio cron del host puede llegar al sitio a través de HTTPS.
Las importaciones se están ejecutando, pero los archivos adjuntos de imágenes dejan de aparecer.DISABLE_WP_CRON está configurado pero ningún cron job llama a wp-cron.php, por lo que el gestor de la cola de imágenes nunca se ejecuta.Añada el segundo cron job para wp-cron.php como se describió anteriormente.
Las importaciones tardan demasiado o alcanzan un límite de memoria.Los límites de PHP CLI del host son más estrictos de lo esperado.Reduzca el Máximo de vehículos por ejecución de cron, mantenga activado el modo de cola de imágenes y revise Cron and Background Processing.
Las importaciones se ejecutan dos veces en rápida sucesión.Tanto el modo WP-Cron como un cron job del servidor están activos.Cambie el plugin al modo de cron del servidor y añada DISABLE_WP_CRON a wp-config.php.
El cron job se ejecuta pero siempre devuelve "Another import is already running".Una ejecución anterior no finalizó (lote de larga duración, tiempo de espera agotado en el servidor). El bloqueo temporal aún no ha expirado.Espere a que expire el bloqueo y luego investigue la ejecución anterior a través de los logs del plugin. Consulte Cron Errors.

Documentos relacionados