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.txtencomposer.json). - PHP-extensies: Vertrouwt op
openssl,curl,mbstring,json, en een vangd/imagickvoor beeldbewerking. Het tabblad Systeem & Hulp toont ookZipArchivevoor exportbundels. - Database-toegang: Verloopt uitsluitend via
$wpdbmet prepared statements. Geen direct gebruik van PDO ofmysqli. - 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- enusers-tabellen worden gebruikt voor deas24ci_carCPT, 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_strtolowerenz.).json-extensie — coderen/decoderen van API-payloads en optie-blobs.gdofimagick-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:
| Instelling | Minimum | Aanbevolen | Opmerkingen |
|---|---|---|---|
memory_limit | 128 MB | 256 MB+ | < 128 MB wordt gemarkeerd als "te laag"; 256 MB+ is "goed". |
max_execution_time | 30 s | 120 s+ (of 0 = onbeperkt) | < 30 s wordt gemarkeerd als "te laag"; 30–60 s "acceptabel". |
upload_max_filesize | 8 MB | 16 MB+ | Moet ruim voldoende zijn voor één voertuigafbeelding. |
post_max_size | 16 MB | 32 MB+ | Moet ≥ upload_max_filesize zijn. |
max_input_vars | 1000 | 3000+ | 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 opdbDelta()en nemen de WordPress-tekenset/collatie over (meestalutf8mb4). - 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 inposts/postmeta, plus taxonomie-termen interm_*. - 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 hetas24ci_*-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-importelke 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,gdofimagick, plusZipArchive. - 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
$wpdbmetprepare(), 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 exhaustedtijdens imports: Verhoogmemory_limitnaar 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: Verhoogmax_execution_timevoor 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.