Documentatie · Systeemvereisten

PHP- en databasevereisten

Inleiding

ADP Car Market Hub is een moderne PHP 8-plugin die gebruikmaakt van namespaces, strict typing op veel plaatsen en de WordPress database-abstractielaag ($wpdb, dbDelta()). Het draait op dezelfde PHP- en databasestack als WordPress zelf, maar voegt zijn eigen aangepaste tabellen toe voor voertuigen, analytics-gebeurtenissen en zoekfilters, plus bestandsgebaseerde logboeken.

Dit document beschrijft de PHP-taalversie en -extensies, database-engine en opslagoverwegingen, en de operationele gevolgen van imports, logboeken, leads en analytics.

Wanneer u dit document moet gebruiken

Gebruik dit document wanneer u:

  • De PHP-runtime configureert voor een nieuwe WordPress-host.
  • Een bestaande PHP-omgeving controleert op basis van de vereisten van de plugin.
  • Database-opslag en -groei plant voor een dealerwebsite.
  • Prestatie- of geheugenproblemen onderzoekt tijdens imports of AI-generatie.
  • De database moet dimensioneren voor het bewaren van analytics en leadbeheer.

Overzicht

De plugin maakt gebruik van de standaard WordPress runtime-stack:

  • PHP-taal: Vereist PHP 8.1+ (ingesteld in de plugin-header, readme.txt en composer.json).
  • PHP-extensies: Vertrouwt op openssl, curl, mbstring, json, en een van gd / imagick voor beeldbewerking. Het tabblad Systeem & Hulp toont ook ZipArchive voor exportbundels.
  • Database-toegang: Verloopt uitsluitend via $wpdb met prepared statements. Geen direct gebruik van PDO of mysqli.
  • Aangepaste tabellen: Gemaakt bij activering via dbDelta(); één voor voertuiggegevens ({prefix}as24_vehicles), één voor analytics-gebeurtenissen, één voor abonnees van zoekfilters.
  • WordPress-tabellen: Standaard posts-, postmeta-, term_*-, options- en users-tabellen worden gebruikt voor de as24ci_car CPT, voertuigtaxonomieën, plugin-instellingen, leads (een aparte CPT) en capabilities.
  • Bestandsgebaseerde logboeken: Geschreven naar wp-content/uploads/as24ci-logs/, niet naar de database. Geroteerd bij 10 MB met een bewaartermijn van 7 dagen.

Vereisten

PHP-versie

  • Minimum (afgedwongen door de plugin): PHP 8.1.
  • Aanbevolen: Een momenteel ondersteunde PHP 8.x-versie (8.2 of 8.3) voor de beste prestaties en beveiliging op de lange termijn.
  • Niet ondersteund: PHP 8.0 of ouder. De metadata van de plugin verklaart 8.1 als het minimum en de codebase gebruikt PHP 8.1-syntaxis.

Vereiste PHP-functionaliteiten

De omgevingscontrole van de plugin dwingt het volgende af tijdens runtime en toont het resultaat in het tabblad Systeem & Hulp:

  • openssl-extensie — uitgaande HTTPS (AutoScout24 API, beheerd Gemini-endpoint).
  • curl-extensie — gebruikt door de WordPress HTTP API voor uitgaande verzoeken.
  • mbstring-extensie — verwerking van multi-byte strings (mb_strtolower enz.).
  • json-extensie — coderen/decoderen van API-payloads en optie-blobs.
  • gd of imagick-extensie — verwerking van afbeeldingsbijlagen en optionele WebP-conversie.
  • ZipArchive-klasse — aanbevolen (gebruikt voor export-/downloadbundels).
  • Een beschrijfbare wp-content/uploads/-map voor afbeeldingen en logboeken.

Aanbevolen PHP-runtime-instellingen

Deze worden niet in de code afgedwongen, maar komen overeen met de drempelwaarden in het tabblad Systeem & Hulp van de plugin:

InstellingMinimumAanbevolenOpmerkingen
memory_limit128 MB256 MB+< 128 MB wordt gemarkeerd als "te laag"; 256 MB+ is "goed".
max_execution_time30 s120 s+ (of 0 = onbeperkt)< 30 s wordt gemarkeerd als "te laag"; 30–60 s "acceptabel".
upload_max_filesize8 MB16 MB+Moet ruim voldoende zijn voor één voertuigafbeelding.
post_max_size16 MB32 MB+Moet ≥ upload_max_filesize zijn.
max_input_vars10003000+De tabbladen Mapping en Filters verzenden veel velden tegelijk.

Voor WP-Cron- en CLI-uitvoeringen gelden dezelfde limieten voor de PHP CLI / FPM-pool die de cronjob afhandelt.

OPcache en realpath-cache

OPcache wordt aanbevolen in productieomgevingen. De plugin bevat veel kleine klassen; OPcache vermindert de overhead per verzoek aanzienlijk. Gebruik de door WordPress aanbevolen OPcache-configuratie; er zijn geen speciale instellingen vereist.

Database-engine

  • Vereist: Een door WordPress ondersteunde database — MySQL 5.7+ of MariaDB 10.4+ in lijn met de WordPress-aanbeveling. De plugin dwingt geen striktere versie af, dus dit is een aanbeveling in plaats van een harde vereiste.
  • Aanbevolen voor productie: MySQL 8.0 of MariaDB 10.6+ voor betere JSON-verwerking, standaard volledige UTF-8 (utf8mb4) en verbeterde prestaties op grote tabellen.
  • Storage-engine: InnoDB. De CREATE TABLE-statements van de plugin vertrouwen op dbDelta() en nemen de WordPress-tekenset/collatie over (meestal utf8mb4).
  • Verbinding: Standaard WordPress-inloggegevens in wp-config.php. De plugin gebruikt geen aparte databaseverbinding.

Database-opslag

De plugin maakt en onderhoudt de volgende gegevens:

  • Custom post type as24ci_car — één WordPress-bericht per voertuig in posts / postmeta, plus taxonomie-termen in term_*.
  • Custom post type voor leads — contactformulier-, proefrit- en zoekfilter-leads opgeslagen als berichten met metadata.
  • {prefix}as24_vehicles — snelle opzoektabel met belangrijke voertuigkenmerken (prijs, valuta, hashes gebruikt voor wijzigingsdetectie, enz.).
  • Analytics-gebeurtenissentabel — paginaweergaven, filterinteracties, contact-open-gebeurtenissen en lead-gebeurtenissen met dagelijkse aggregatie.
  • Zoekfilterstabel — opgeslagen zoekopdrachten en double-opt-in abonneeregisters voor Smart Stock Alerts.
  • Opties (wp_options) — plugin-instellingen onder het as24ci_*-prefix, plus transients gebruikt voor de import-lock en de afbeeldingswachtrij.

Praktische richtlijnen voor de omvang:

  • Per voertuig: Een paar KB in posts + postmeta + as24_vehicles, plus afbeeldingsbijlagen (bericht + bijlage-metadata). Binaire opslag van afbeeldingen vindt plaats op de schijf, niet in de database.
  • Per analytics-dag: Honderden kleine rijen op een rustige site, tienduizenden op een drukke site. Plan periodieke opschoning als u alleen analytics voor de korte termijn nodig heeft.
  • Per lead: Een handvol rijen (één CPT-bericht + metadata).

Imports

  • Imports worden in batches uitgevoerd. De Batch-Wizard past de batchgrootte aan tussen 1 en 5 voertuigen per stap; cron-uitvoeringen gebruiken een configureerbare maximale instelling voor het aantal voertuigen per run.
  • Het downloaden van afbeeldingen wordt in de wachtrij geplaatst en asynchroon verwerkt wanneer de "afbeeldingswachtrij-modus" is ingeschakeld, zodat een enkel PHP-verzoek nooit tientallen afbeeldingen tegelijk hoeft te downloaden.
  • Een import-lock (transient met een TTL van 40 minuten) voorkomt dat twee cron-runs elkaar overlappen.
  • Re-imports maken gebruik van inhouds- en afbeeldingshashes voor wijzigingsdetectie, zodat ongewijzigde voertuigen vrijwel geen database-schrijfbewerkingen veroorzaken.
  • Volledige synchronisatie verwijdert lokale auto's (en hun bijlagen) die niet langer in de externe lijst voorkomen — dit is een destructieve bewerking, dus back-ups moeten aanwezig zijn.

Logboeken

  • Plugin-logboeken bevinden zich in wp-content/uploads/as24ci-logs/adp-car-market-hub.log.
  • Het actieve logboek wordt geroteerd wanneer het groter is dan 10 MB (Logger::MAX_SIZE_BYTES).
  • Geroteerde archieven ouder dan 7 dagen worden automatisch verwijderd.
  • Logboekschrijfbewerkingen belasten de database niet; schijf-only loggen houdt imports snel en voorkomt dat MySQL onnodig groeit.

Leads

  • Leads worden opgeslagen als een specifiek WordPress custom post type met metadata voor de bron (contactformulier, proefrit, zoekfilter), toestemmingsstatus en tijdstempels.
  • Het leadvolume is normaal gesproken klein in vergelijking met voertuigen, maar elke lead bevat persoonlijke gegevens — zie de sectie Privacy, beveiliging en naleving voor richtlijnen over bewaartermijnen.
  • Er is een CSV-export beschikbaar, zodat leads kunnen worden verplaatst naar een extern CRM en periodiek kunnen worden verwijderd uit WordPress.

Analytics

  • Analytics-gebeurtenissen worden tijdens normaal sitegebruik in een speciale tabel ingevoegd (paginaweergaven, filterklikken, geopende contactformulieren, leadconversies).
  • Aggregatie-query's voeden de dashboardwidget en het tabblad Analytics; ze lezen uitsluitend uit deze tabel.
  • Voor websites die al langere tijd draaien, houdt het periodiek opschonen van de gebeurtenissentabel (bijvoorbeeld door alleen de laatste 12 maanden te bewaren) de querytijden binnen de perken. Doe dit via een database-back-up-en-leegmaakprocedure of via uw eigen geplande taak; de plugin schoont gebeurtenissen niet automatisch op.

Operationele schaalbaarheid

  • De plugin schaalt lineair met de omvang van de voorraad. De belangrijkste kostenposten zijn het downloaden van afbeeldingen (netwerk + schijf + CPU voor de afbeeldingsbibliotheek) en analytics-schrijfbewerkingen (database-I/O).
  • Voor grote dealers (1000+ voertuigen) heeft het volgende de voorkeur:
  • PHP 8.2/8.3 met OPcache.
  • 512 MB+ PHP memory_limit.
  • Externe cron die /as24ci/v1/cron-import elke 5–10 minuten activeert.
  • Object-cache (Redis of Memcached) voor WordPress.
  • MySQL 8 / MariaDB 10.6+ op dedicated resources.
  • Voor kleine dealers (< 100 voertuigen) is de WordPress-basislijn (256 MB geheugen, 120 s uitvoeringstijd) meer dan voldoende.

Aanbevolen productie-installatie

  • PHP 8.2 of 8.3 (PHP-FPM) met OPcache ingeschakeld.
  • memory_limit = 256M (of 512M for grote voorraden), max_execution_time = 300, max_input_vars = 3000.
  • Alle vereiste extensies geïnstalleerd: openssl, curl, mbstring, json, gd of imagick, plus ZipArchive.
  • MySQL 8.0 of MariaDB 10.6+ met utf8mb4-tekenset en InnoDB-opslag.
  • Dagelijkse database-back-ups inclusief de aangepaste tabellen van de plugin.
  • Periodieke opschoning van analytics-gebeurtenissen en geëxporteerde leads als u zich zorgen maakt over bewaartermijnen van meerdere jaren.
  • Object-cache (Redis of Memcached) op drukke websites.

Operationele opmerkingen

  • Alle database-toegang verloopt via $wpdb met prepare(), waardoor de plugin de prepared-statement-beveiligingen van WordPress overneemt.
  • De aangepaste tabellen worden gemaakt en gemigreerd via dbDelta() bij plugin-activering en upgrades van capability-versies. Handmatige schema-aanpassingen zijn niet vereist.
  • De plugin slaat het AutoScout24 client secret niet op in bronbestanden; het wordt opgeslagen als een WordPress-optie. Behandel database-back-ups alsof ze gevoelige gegevens bevatten. De beheerde Gemini API-sleutel die door de AI Assistant wordt gebruikt, is door AD Promotion geconfigureerd in AS24CI\Ai_Config (een PHP-constante) en wordt niet opgeslagen als een WordPress-optie.
  • Het tabblad Systeem & Hulp in de WordPress-beheeromgeving toont elke hierboven genoemde PHP- en extensiecontrole met live waarden van de actieve site.
  • Het wisselen van PHP-versies of extensies op de host vereist geen herconfiguratie van de plugin — controleer het tabblad Systeem & Hulp opnieuw na de wijziging.

Probleemoplossing

  • "Niet aan alle vereisten voldaan" in het tabblad Systeem & Hulp: Identificeer het ontbrekende item (PHP-versie, ontbrekende extensie, te weinig geheugen) en pas de PHP-runtime dienovereenkomstig aan.
  • Allowed memory size of … bytes exhausted tijdens imports: Verhoog memory_limit naar 256 MB of 512 MB en verlaag de voertuig-batchgrootte per cron-run.
  • Imports lopen vast bij "afbeeldingsverwerking": Controleer of GD of Imagick is geïnstalleerd en of de uploads-map beschrijfbaar is; controleer het plugin-logbestand op afbeeldingsspecifieke fouten.
  • Maximum execution time of … seconds exceeded: Verhoog max_execution_time voor de FPM-pool die door cron wordt gebruikt, en geef de voorkeur aan de afbeeldingswachtrij boven inline afbeeldingsdownloads.
  • Aangepaste tabellen ontbreken na een handmatige database-back-up: Deactiveer en reactiveer de plugin om de dbDelta()-upgraderoutine opnieuw uit te voeren.
  • Plugin-logmap groeit onverwacht snel: Uitgebreid loggen (verbose) is mogelijk ingeschakeld; schakel dit uit in het tabblad Automatisering/Logboeken zodra het probleem is gediagnosticeerd. Rotatie is nog steeds van toepassing, maar de verbose-modus produceert veel regels per voertuig.
  • Analytics-query's traag op zeer grote sites: Schoon oudere gebeurtenissen op (na het maken van een back-up) en zorg ervoor dat de databaseserver voldoende bufferpool / RAM heeft.

Gerelateerde documenten