Documentation · System Requirements

Configuration requise pour PHP et la base de données

Introduction

ADP Car Market Hub est un plugin PHP 8 moderne qui utilise des espaces de noms, un typage strict dans de nombreux endroits et la couche d'abstraction de base de données WordPress ($wpdb, dbDelta()). Il fonctionne sur la même pile PHP et base de données que WordPress lui-même, mais ajoute ses propres tables personnalisées pour les véhicules, les événements d'analyse et les alertes de recherche, en plus de journaux basés sur des fichiers.

Ce document décrit la version et les extensions du langage PHP, le moteur de base de données et les considérations de stockage, ainsi que les implications opérationnelles des importations, des journaux, des leads et des analyses.

Quand utiliser ce document

Utilisez ce document lorsque vous :

  • Configurez l'environnement d'exécution PHP pour un nouvel hébergeur WordPress.
  • Auditez un environnement PHP existant par rapport aux exigences du plugin.
  • Planifiez le stockage et la croissance de la base de données pour un site de concessionnaire.
  • Examinez des problèmes de performance ou de mémoire lors des importations ou de la génération par IA.
  • Devez dimensionner la base de données pour la conservation des analyses et la gestion des leads.

Aperçu

Le plugin utilise la pile d'exécution standard de WordPress :

  • Langage PHP : Nécessite PHP 8.1+ (défini dans l'en-tête du plugin, readme.txt et composer.json).
  • Extensions PHP : S'appuie sur openssl, curl, mbstring, json, et l'une des extensions gd / imagick pour le traitement des images. L'onglet Système & Aide met également en évidence ZipArchive pour les lots d'exportation.
  • Accès à la base de données : Passe exclusivement par $wpdb avec des requêtes préparées. Pas d'utilisation directe de PDO ou de mysqli.
  • Tables personnalisées : Créées lors de l'activation via dbDelta() ; une pour les fiches de véhicules ({prefix}as24_vehicles), une pour les événements d'analyse, une pour les abonnés aux alertes de recherche.
  • Tables WordPress : Les tables standard posts, postmeta, term_*, options et users sont utilisées pour le CPT as24ci_car, les taxonomies de véhicules, les réglages du plugin, les leads (un CPT distinct) et les rôles/capacités.
  • Journaux basés sur des fichiers : Écrits dans wp-content/uploads/as24ci-logs/, pas dans la base de données. Rotation à 10 Mo avec une conservation de 7 jours.

Configuration requise

Version de PHP

  • Minimum (imposé par le plugin) : PHP 8.1.
  • Recommandé : Une branche PHP 8.x actuellement prise en charge (8.2 ou 8.3) pour des performances et une sécurité optimales à long terme.
  • Non pris en charge : PHP 8.0 ou version antérieure. Les métadonnées du plugin déclarent 8.1 comme minimum et le code utilise la syntaxe 8.1.

Fonctionnalités PHP requises

La vérification de l'environnement du plugin applique les éléments suivants lors de l'exécution et affiche le résultat dans l'onglet Système & Aide :

  • Extension openssl — HTTPS sortant (API AutoScout24, point de terminaison Gemini géré).
  • Extension curl — utilisée par l'API HTTP de WordPress pour les requêtes sortantes.
  • Extension mbstring — gestion des chaînes multi-octets (mb_strtolower, etc.).
  • Extension json — encodage/décodage des charges utiles de l'API et des blocs d'options.
  • Extension gd ou imagick — traitement des images jointes et conversion WebP facultative.
  • Classe ZipArchive — recommandée (utilisée pour les lots d'exportation/téléchargement).
  • Un répertoire wp-content/uploads/ accessible en écriture pour les images et les journaux.

Réglages d'exécution PHP recommandés

Ceux-ci ne sont pas imposés dans le code mais correspondent aux seuils de l'onglet Système & Aide du plugin :

RéglageMinimumRecommandéNotes
memory_limit128 Mo256 Mo+< 128 Mo est signalé comme "trop bas" ; 256 Mo+ est "bon".
max_execution_time30 s120 s+ (ou 0 = illimité)< 30 s est signalé comme "trop bas" ; 30–60 s "acceptable".
upload_max_filesize8 Mo16 Mo+Doit couvrir confortablement une image de véhicule.
post_max_size16 Mo32 Mo+Doit être ≥ upload_max_filesize.
max_input_vars10003000+Les onglets de Mapping et de Filtres soumettent de nombreux champs à la fois.

Pour les exécutions WP-Cron et CLI, les mêmes limites s'appliquent au pool PHP CLI / FPM qui gère la tâche cron.

OPcache et cache realpath

OPcache est recommandé en production. Le plugin contient de nombreuses petites classes ; OPcache réduit considérablement la surcharge par requête. Utilisez la configuration OPcache recommandée par WordPress ; aucun réglage spécial n'est requis.

Moteur de base de données

  • Requis : Une base de données prise en charge par WordPress — MySQL 5.7+ ou MariaDB 10.4+ conformément à la recommandation de WordPress. Le plugin n'impose pas de version plus stricte, il s'agit donc d'une recommandation plutôt que d'une exigence absolue.
  • Recommandé pour la production : MySQL 8.0 ou MariaDB 10.6+ pour une meilleure gestion du JSON, de l'UTF-8 complet (utf8mb4) par défaut, et des performances améliorées sur les grandes tables.
  • Moteur de stockage : InnoDB. Les instructions CREATE TABLE du plugin s'appuient sur dbDelta() et héritent du jeu de caractères/collation de WordPress (généralement utf8mb4).
  • Connexion : Identifiants WordPress standard dans wp-config.php. Le plugin n'utilise pas de connexion de base de données distincte.

Stockage de la base de données

Le plugin crée et maintient les données suivantes :

  • Type de publication personnalisé as24ci_car — une publication WordPress par véhicule dans posts / postmeta, plus les termes de taxonomie dans term_*.
  • Type de publication personnalisé pour les leads — leads de formulaire de contact, d'essai routier et d'alerte de recherche stockés sous forme de publications avec des métadonnées.
  • {prefix}as24_vehicles — table de recherche rapide avec les attributs clés du véhicule (prix, devise, empreintes numériques utilisées pour la détection des changements, etc.).
  • Table des événements d'analyse — pages vues, interactions avec les filtres, événements d'ouverture de contact et événements de leads avec agrégation quotidienne.
  • Table des alertes de recherche — recherches enregistrées et fiches d'abonnés avec double opt-in pour les Smart Stock Alerts.
  • Options (wp_options) — réglages du plugin sous le préfixe as24ci_*, plus les transients utilisés pour le verrouillage d'importation et la file d'attente d'images.

Conseils pratiques de dimensionnement :

  • Par véhicule : Quelques Ko dans posts + postmeta + as24_vehicles, plus les images jointes (publication + métadonnées de pièce jointe). Le stockage binaire des images se fait sur le disque, pas dans la base de données.
  • Par jour d'analyse : Des centaines de petites lignes sur un site calme, des dizaines de milliers sur un site très fréquenté. Prévoyez un nettoyage périodique si vous n'avez besoin que d'analyses à court terme.
  • Par lead : Une poignée de lignes (une publication CPT + métadonnées).

Importations

  • Les importations sont regroupées par lots. L'assistant de lot (Batch-Wizard) adapte la taille du lot entre 1 et 5 véhicules par étape ; les exécutions cron utilisent un réglage configurable du nombre maximal de véhicules par exécution.
  • Les téléchargements d'images sont mis en file d'attente et traités de manière asynchrone lorsque le "mode file d'attente d'images" est activé, de sorte qu'une seule requête PHP n'a jamais à télécharger des dizaines d'images.
  • Un verrou d'importation (transient avec une durée de vie de 40 minutes) empêche le chevauchement de deux exécutions cron.
  • Les réimportations utilisent des empreintes numériques de contenu et d'image pour la détection des changements, de sorte que les véhicules inchangés n'entraînent presque aucune écriture dans la base de données.
  • La synchronisation complète (Full Sync) supprime les véhicules locaux (et leurs pièces jointes) qui n'apparaissent plus dans la liste distante — il s'agit d'une opération destructive, des sauvegardes doivent donc être en place.

Journaux

  • Les journaux du plugin résident dans wp-content/uploads/as24ci-logs/adp-car-market-hub.log.
  • Le journal actif subit une rotation lorsqu'il dépasse 10 Mo (Logger::MAX_SIZE_BYTES).
  • Les archives issues de la rotation datant de plus de 7 jours sont supprimées automatiquement.
  • Les écritures de journaux ne touchent pas la base de données ; la journalisation sur disque uniquement permet de maintenir la rapidité des importations et d'éviter de surcharger MySQL.

Leads

  • Les leads sont stockés sous la forme d'un type de publication personnalisé WordPress dédié avec des métadonnées pour la source (formulaire de contact, essai routier, alerte de recherche), le statut de consentement et les horodatages.
  • Le volume de leads est normalement faible par rapport aux véhicules, mais chaque lead représente des données personnelles — consultez la section Confidentialité, Sécurité et Conformité pour obtenir des conseils sur la conservation.
  • Un export CSV est fourni afin que les leads puissent être déplacés vers un CRM externe et purgés de WordPress périodiquement.

Analyse

  • Les événements d'analyse sont insérés dans une table dédiée lors de l'utilisation normale du site (pages vues, clics sur les filtres, ouvertures de contact, conversions de leads).
  • Les requêtes d'agrégation alimentent le widget du tableau de bord et l'onglet Analyse ; elles lisent uniquement à partir de cette table.
  • Pour les sites existant depuis longtemps, une purge périodique de la table des événements (par exemple, en ne conservant que les 12 derniers mois) permet de limiter les temps de requête. Effectuez cette opération via une procédure de sauvegarde puis de vidage (truncate) de la base de données ou via votre propre tâche planifiée ; le plugin ne purge pas automatiquement les événements.

Évolutivité opérationnelle

  • Le plugin évolue de manière linéaire avec la taille de l'inventaire. Les coûts dominants sont les téléchargements d'images (réseau + disque + processeur de la bibliothèque d'images) et les écritures d'analyse (E/S de base de données).
  • Pour les grands concessionnaires (plus de 1000 véhicules), privilégiez :
  • PHP 8.2/8.3 avec OPcache.
  • Plus de 512 Mo de memory_limit PHP.
  • Un cron externe déclenchant /as24ci/v1/cron-import toutes les 5 à 10 minutes.
  • Un cache d'objets (Redis ou Memcached) pour WordPress.
  • MySQL 8 / MariaDB 10.6+ sur des ressources dédiées.
  • Pour les petits concessionnaires (moins de 100 véhicules), la configuration de base de WordPress (256 Mo de mémoire, 120 s de temps d'exécution) est amplement suffisante.

Configuration de production recommandée

  • PHP 8.2 ou 8.3 (PHP-FPM) avec OPcache activé.
  • memory_limit = 256M (ou 512M pour les grands inventaires), max_execution_time = 300, max_input_vars = 3000.
  • Toutes les extensions requises installées : openssl, curl, mbstring, json, gd ou imagick, plus ZipArchive.
  • MySQL 8.0 ou MariaDB 10.6+ avec le jeu de caractères utf8mb4 et le stockage InnoDB.
  • Sauvegardes quotidiennes de la base de données, y compris les tables personnalisées du plugin.
  • Purge périodique des événements d'analyse et des leads exportés si vous avez des préoccupations concernant la conservation sur plusieurs années.
  • Cache d'objets (Redis ou Memcached) sur les sites très fréquentés.

Notes opérationnelles

  • Tout l'accès à la base de données passe par $wpdb avec prepare(), de sorte que le plugin hérite des protections de requêtes préparées de WordPress.
  • Les tables personnalisées sont créées et migrées via dbDelta() lors de l'activation du plugin et des mises à niveau de version des fonctionnalités. Aucune modification manuelle du schéma n'est requise.
  • Le plugin ne stocke pas le secret client AutoScout24 dans les fichiers sources ; il est enregistré en tant qu'option WordPress. Traitez les sauvegardes de base de données comme contenant des données sensibles. La clé API Gemini gérée utilisée par l'assistant IA est configurée par AD Promotion dans AS24CI\Ai_Config (une constante PHP) et n'est pas stockée en tant qu'option WordPress.
  • L'onglet Système & Aide dans l'administration de WordPress reproduit chaque vérification PHP et d'extension répertoriée ci-dessus avec les valeurs en temps réel du site en cours d'exécution.
  • Le changement de version PHP ou d'extension sur l'hébergeur ne nécessite aucune reconfiguration du plugin — vérifiez à nouveau l'onglet Système & Aide après le changement.

Dépannage

  • "Exigences non satisfaites" dans l'onglet Système & Aide : Identifiez l'élément manquant (version PHP, extension manquante, mémoire faible) et ajustez l'environnement d'exécution PHP en conséquence.
  • Allowed memory size of … bytes exhausted pendant les importations : Augmentez memory_limit à 256 Mo ou 512 Mo et réduisez la taille du lot de véhicules par exécution cron.
  • Les importations bloquent au niveau du "traitement des images" : Confirmez que GD ou Imagick est installé et que le répertoire des téléchargements est accessible en écriture ; vérifiez le fichier journal du plugin pour les erreurs spécifiques aux images.
  • Maximum execution time of … seconds exceeded : Augmentez max_execution_time pour le pool FPM utilisé par le cron, et préférez la file d'attente d'images aux téléchargements d'images en ligne.
  • Tables personnalisées manquantes après une restauration manuelle de la base de données : Désactivez et réactivez le plugin pour réexécuter la routine de mise à niveau dbDelta().
  • Le répertoire des journaux du plugin grandit de manière inattendue : La journalisation détaillée peut être activée ; désactivez-la dans l'onglet Automatisation/Journaux une fois le problème diagnostiqué. La rotation s'applique toujours, mais le mode détaillé produit de nombreuses entrées par véhicule.
  • Requêtes d'analyse lentes sur de très grands sites : Purgez les événements plus anciens (après sauvegarde) et assurez-vous que le serveur de base de données dispose de suffisamment de pool de tampons / RAM.

Documents connexes