Documentación · Requisitos del sistema

Requisitos de PHP y base de datos

Introducción

ADP Car Market Hub es un plugin moderno de PHP 8 que utiliza espacios de nombres, tipado estricto en muchos lugares y la capa de abstracción de base de datos de WordPress ($wpdb, dbDelta()). Se ejecuta en el mismo entorno de PHP y base de datos que el propio WordPress, pero añade sus propias tablas personalizadas para vehículos, eventos analíticos y alertas de búsqueda, además de registros basados en archivos.

Este documento describe la versión y extensiones del lenguaje PHP, el motor de base de datos y las consideraciones de almacenamiento, así como las implicaciones operativas de las importaciones, los registros, los leads y las analíticas.

Cuándo utilizar este documento

Utilice este documento cuando:

  • Configure el entorno de ejecución de PHP para un nuevo servidor de WordPress.
  • Audite un entorno PHP existente en comparación con los requisitos del plugin.
  • Planifique el almacenamiento y el crecimiento de la base de datos para un sitio web de concesionario.
  • Investigue problemas de rendimiento o memoria durante las importaciones o la generación por IA.
  • Necesite dimensionar la base de datos para la retención de analíticas y la gestión de leads.

Descripción general

El plugin utiliza el entorno de ejecución estándar de WordPress:

  • Lenguaje PHP: Requiere PHP 8.1+ (definido en la cabecera del plugin, readme.txt y composer.json).
  • Extensiones de PHP: Depende de openssl, curl, mbstring, json y una de gd / imagick para el procesamiento de imágenes. La pestaña Sistema y Ayuda también muestra ZipArchive para los paquetes de exportación.
  • Acceso a la base de datos: Se realiza exclusivamente a través de $wpdb con sentencias preparadas. No se utiliza directamente PDO ni mysqli.
  • Tablas personalizadas: Creadas en la activación mediante dbDelta(); una para los registros de vehículos ({prefix}as24_vehicles), otra para eventos analíticos y otra para los suscriptores de alertas de búsqueda.
  • Tablas de WordPress: Se utilizan las tablas estándar posts, postmeta, term_*, options y users para el CPT as24ci_car, taxonomías de vehículos, ajustes del plugin, leads (un CPT independiente) y capacidades.
  • Registros basados en archivos: Se escriben en wp-content/uploads/as24ci-logs/, no en la base de datos. Se rotan a los 10 MB con una retención de 7 días.

Requisitos

Versión de PHP

  • Mínima (exigida por el plugin): PHP 8.1.
  • Recomendada: Una rama de PHP 8.x con soporte activo (8.2 u 8.3) para obtener el mejor rendimiento y seguridad a largo plazo.
  • No compatible: PHP 8.0 o anterior. Los metadatos del plugin declaran 8.1 como mínimo y el código utiliza sintaxis de 8.1.

Capacidades de PHP requeridas

La comprobación del entorno del plugin exige lo siguiente en tiempo de ejecución y muestra el resultado en la pestaña Sistema y Ayuda:

  • Extensión openssl: HTTPS saliente (API de AutoScout24, endpoint gestionado de Gemini).
  • Extensión curl: utilizada por la API HTTP de WordPress para peticiones salientes.
  • Extensión mbstring: manejo de cadenas multibyte (mb_strtolower, etc.).
  • Extensión json: codificación/decodificación de cargas útiles de la API y bloques de opciones.
  • Extensión gd o imagick: procesamiento de imágenes adjuntas y conversión opcional a WebP.
  • Clase ZipArchive: recomendada (utilizada para paquetes de exportación/descarga).
  • Un directorio wp-content/uploads/ con permisos de escritura para imágenes y registros.

Ajustes recomendados del entorno de ejecución de PHP

Estos no se imponen en el código, pero coinciden con los umbrales de la pestaña Sistema y Ayuda del plugin:

AjusteMínimoRecomendadoNotas
memory_limit128 MB256 MB+< 128 MB se marca como "demasiado bajo"; 256 MB+ es "bueno".
max_execution_time30 s120 s+ (o 0 = ilimitado)< 30 s se marca como "demasiado bajo"; 30–60 s "aceptable".
upload_max_filesize8 MB16 MB+Debe cubrir holgadamente una imagen de vehículo.
post_max_size16 MB32 MB+Debe ser ≥ upload_max_filesize.
max_input_vars10003000+Las pestañas de Mapeo y Filtros envían muchos campos a la vez.

Para las ejecuciones de WP-Cron y CLI, se aplican los mismos límites al CLI de PHP / pool de FPM que gestiona la tarea cron.

OPcache y caché de realpath

Se recomienda OPcache en producción. El plugin contiene muchas clases pequeñas; OPcache reduce sustancialmente la sobrecarga por petición. Utilice la configuración de OPcache recomendada por WordPress; no se requieren ajustes especiales.

Motor de base de datos

  • Requerido: Una base de datos compatible con WordPress: MySQL 5.7+ o MariaDB 10.4+ en línea con la recomendación de WordPress. El plugin no impone una versión más estricta, por lo que esto es una recomendación más que un requisito estricto.
  • Recomendado para producción: MySQL 8.0 o MariaDB 10.6+ para un mejor manejo de JSON, UTF-8 completo (utf8mb4) por defecto y un rendimiento mejorado en tablas grandes.
  • Motor de almacenamiento: InnoDB. Las sentencias CREATE TABLE del plugin dependen de dbDelta() y heredan el juego de caracteres/colación de WordPress (normalmente utf8mb4).
  • Conexión: Credenciales estándar de WordPress en wp-config.php. El plugin no utiliza una conexión de base de datos independiente.

Almacenamiento de base de datos

El plugin crea y mantiene los siguientes datos:

  • Custom post type as24ci_car: una entrada de WordPress por vehículo en posts / postmeta, además de términos de taxonomía en term_*.
  • Custom post type para leads: leads de formularios de contacto, pruebas de conducción y alertas de búsqueda almacenados como entradas con metadatos.
  • {prefix}as24_vehicles: tabla de búsqueda rápida con atributos clave del vehículo (precio, moneda, hashes utilizados para la detección de cambios, etc.).
  • Tabla de eventos analíticos: páginas vistas, interacciones con filtros, eventos de apertura de contacto y eventos de leads con agregación diaria.
  • Tabla de alertas de búsqueda: búsquedas guardadas y registros de suscriptores con doble opt-in para Smart Stock Alerts.
  • Opciones (wp_options): ajustes del plugin bajo el prefijo as24ci_*, además de transients utilizados para el bloqueo de importación y la cola de imágenes.

Guía práctica de dimensionamiento:

  • Por vehículo: Unos pocos KB en posts + postmeta + as24_vehicles, además de las imágenes adjuntas (entrada + metadatos del archivo adjunto). El almacenamiento binario de las imágenes se realiza en el disco, no en la base de datos.
  • Por día de analíticas: Cientos de filas pequeñas en un sitio con poco tráfico, decenas de miles en uno muy activo. Planifique una purga periódica si solo necesita analíticas a corto plazo.
  • Por lead: Un puñado de filas (una entrada de CPT + metadatos).

Importaciones

  • Las importaciones se realizan por lotes. El Asistente de lotes adapta el tamaño del lote entre 1 y 5 vehículos por paso; las ejecuciones de cron utilizan un ajuste configurable de máximo de vehículos por ejecución.
  • Las descargas de imágenes se encolan y se procesan de forma asíncrona cuando el "modo de cola de imágenes" está activado, de modo que una sola petición PHP nunca tiene que descargar docenas de imágenes.
  • Un bloqueo de importación (transient con un TTL de 40 minutos) evita que se solapen dos ejecuciones de cron.
  • Las reimportaciones utilizan hashes de contenido e imágenes para la detección de cambios, por lo que los vehículos que no han cambiado casi no generan escrituras en la base de datos.
  • La Sincronización Completa elimina los coches locales (y sus archivos adjuntos) que ya no aparecen en el listado remoto; esta es una operación destructiva, por lo que se deben tener copias de seguridad preparadas.

Registros

  • Los registros del plugin se guardan en wp-content/uploads/as24ci-logs/adp-car-market-hub.log.
  • El registro activo se rota cuando supera los 10 MB (Logger::MAX_SIZE_BYTES).
  • Los archivos rotados con más de 7 días de antigüedad se eliminan automáticamente.
  • Las escrituras de registros no afectan a la base de datos; el registro exclusivo en disco mantiene las importaciones rápidas y evita inflar MySQL.

Leads

  • Los leads se almacenan como un custom post type dedicado de WordPress con metadatos para el origen (formulario de contacto, prueba de conducción, alerta de búsqueda), estado de consentimiento y marcas de tiempo.
  • El volumen de leads suele ser pequeño en comparación con el de vehículos, pero cada lead representa datos personales; consulte la sección de Privacidad, Seguridad y Cumplimiento para obtener orientación sobre la retención.
  • Se proporciona exportación a CSV para que los leads puedan trasladarse a un CRM externo y purgarse de WordPress periódicamente.

Analíticas

  • Los eventos analíticos se insertan en una tabla dedicada durante el uso normal del sitio (páginas vistas, clics en filtros, aperturas de contacto, conversiones de leads).
  • Las consultas de agregación alimentan el widget del escritorio y la pestaña Analíticas; leen únicamente de esta tabla.
  • Para sitios con mucho tiempo de actividad, la purga periódica de la tabla de eventos (por ejemplo, conservando solo los últimos 12 meses) mantiene acotados los tiempos de consulta. Realice esto mediante un procedimiento de copia de seguridad y posterior vaciado (truncate) de la base de datos o a través de su propia tarea programada; el plugin no purga automáticamente los eventos.

Escalado operativo

  • El plugin escala linealmente con el tamaño del inventario. Los costes dominantes son las descargas de imágenes (red + disco + CPU de la biblioteca de imágenes) y las escrituras de analíticas (E/S de base de datos).
  • Para grandes concesionarios (más de 1000 vehículos), se prefiere:
  • PHP 8.2/8.3 con OPcache.
  • Más de 512 MB de memory_limit de PHP.
  • Cron externo que active /as24ci/v1/cron-import cada 5–10 minutos.
  • Caché de objetos (Redis o Memcached) para WordPress.
  • MySQL 8 / MariaDB 10.6+ en recursos dedicados.
  • Para pequeños concesionarios (menos de 100 vehículos), la línea base de WordPress (256 MB de memoria, 120 s de tiempo de ejecución) es más que suficiente.

Configuración recomendada para producción

  • PHP 8.2 u 8.3 (PHP-FPM) con OPcache activado.
  • memory_limit = 256M (o 512M para inventarios grandes), max_execution_time = 300, max_input_vars = 3000.
  • Todas las extensiones requeridas instaladas: openssl, curl, mbstring, json, gd o imagick, además de ZipArchive.
  • MySQL 8.0 o MariaDB 10.6+ con juego de caracteres utf8mb4 y almacenamiento InnoDB.
  • Copias de seguridad diarias de la base de datos, incluyendo las tablas personalizadas del plugin.
  • Purga periódica de eventos analíticos y leads exportados si existen preocupaciones sobre la retención de varios años.
  • Caché de objetos (Redis o Memcached) en sitios con mucho tráfico.

Notas operativas

  • Todo el acceso a la base de datos se realiza a través de $wpdb con prepare(), por lo que el plugin hereda las protecciones de sentencias preparadas de WordPress.
  • Las tablas personalizadas se crean y migran a través de dbDelta() al activar el plugin y al actualizar las versiones de capacidad. No se requieren ediciones manuales del esquema.
  • El plugin no almacena el client secret de AutoScout24 en los archivos de origen; se guarda como una opción de WordPress. Trate las copias de seguridad de la base de datos como información que contiene datos sensibles. La clave de API gestionada de Gemini utilizada por el asistente de IA la configura AD Promotion en AS24CI\Ai_Config (una constante de PHP) y no se almacena como una opción de WordPress.
  • La pestaña Sistema y Ayuda en la administración de WordPress reproduce cada comprobación de PHP y de extensiones listada anteriormente con valores en tiempo real del sitio en ejecución.
  • Cambiar las versiones de PHP o las extensiones en el servidor no requiere ninguna reconfiguración del plugin; vuelva a comprobar la pestaña Sistema y Ayuda después del cambio.

Resolución de problemas

  • "No se cumplen los requisitos" en la pestaña Sistema y Ayuda: Identifique el elemento que falta (versión de PHP, extensión ausente, memoria baja) y ajuste el entorno de ejecución de PHP en consecuencia.
  • Allowed memory size of … bytes exhausted durante las importaciones: Aumente memory_limit a 256 MB o 512 MB y reduzca el tamaño del lote de vehículos por ejecución de cron.
  • Las importaciones se detienen en el "procesamiento de imágenes": Confirme que GD o Imagick están instalados y que el directorio de subidas tiene permisos de escritura; revise el archivo de registro del plugin para ver errores específicos de imágenes.
  • Maximum execution time of … seconds exceeded: Aumente max_execution_time para el pool de FPM utilizado por el cron, y prefiera la cola de imágenes en lugar de las descargas de imágenes en línea.
  • Faltan tablas personalizadas tras una restauración manual de la base de datos: Desactive y vuelva a activar el plugin para ejecutar de nuevo la rutina de actualización de dbDelta().
  • El directorio de registros del plugin crece inesperadamente: Es posible que el registro detallado (verbose) esté activado; desactívelo en la pestaña Automatización/Registros una vez diagnosticado el problema. La rotación se sigue aplicando, pero el modo detallado genera muchas entradas por vehículo.
  • Consultas analíticas lentas en sitios muy grandes: Purgue los eventos más antiguos (después de hacer una copia de seguridad) y asegúrese de que el servidor de base de datos tiene suficiente buffer pool / RAM.

Documentos relacionados