Dokumentation · Systemvoraussetzungen
PHP- und Datenbank-Anforderungen
Einführung
ADP Car Market Hub ist ein modernes PHP 8-Plugin, das Namespaces, strikte Typisierung an vielen Stellen und die WordPress-Datenbankabstraktionsschicht ($wpdb, dbDelta()) verwendet. Es läuft auf demselben PHP- und Datenbank-Stack wie WordPress selbst, fügt jedoch eigene benutzerdefinierte Tabellen für Fahrzeuge, Analytics-Ereignisse und Suchaufträge sowie dateibasierte Protokolle hinzu.
Dieses Dokument beschreibt die PHP-Sprachversion und -Erweiterungen, Überlegungen zur Datenbank-Engine und zum Speicherplatz sowie die betrieblichen Auswirkungen von Importen, Protokollen, Leads und Analytics.
Wann dieses Dokument zu verwenden ist
Verwenden Sie dieses Dokument, wenn Sie:
- Die PHP-Laufzeitumgebung für einen neuen WordPress-Host konfigurieren.
- Eine bestehende PHP-Umgebung im Hinblick auf die Anforderungen des Plugins überprüfen.
- Den Datenbankspeicher und das Wachstum für eine Autohaus-Website planen.
- Performance- oder Speicherprobleme während der Importe oder der KI-Generierung untersuchen.
- Die Datenbankgröße für die Aufbewahrung von Analytics-Daten und das Lead-Management dimensionieren müssen.
Übersicht
Das Plugin verwendet den standardmäßigen WordPress-Laufzeit-Stack:
- PHP-Sprache: Erfordert PHP 8.1+ (festgelegt im Plugin-Header,
readme.txtundcomposer.json). - PHP-Erweiterungen: Basiert auf
openssl,curl,mbstring,jsonund entwedergd/imagickfür die Bildverarbeitung. Der Reiter „System & Hilfe“ zeigt auchZipArchivefür Export-Bundles an. - Datenbankzugriff: Erfolgt ausschließlich über
$wpdbmit Prepared Statements. Keine direkte Verwendung von PDO odermysqli. - Benutzerdefinierte Tabellen: Werden bei der Aktivierung über
dbDelta()erstellt; eine für Fahrzeugdatensätze ({prefix}as24_vehicles), eine für Analytics-Ereignisse, eine für Suchauftrag-Abonnenten. - WordPress-Tabellen: Die Standardtabellen
posts,postmeta,term_*,optionsunduserswerden für denas24ci_carCPT, Fahrzeug-Taxonomien, Plugin-Einstellungen, Leads (ein separater CPT) und Berechtigungen verwendet. - Dateibasierte Protokolle: Werden in
wp-content/uploads/as24ci-logs/geschrieben, nicht in die Datenbank. Rotation bei 10 MB mit einer Aufbewahrungsfrist von 7 Tagen.
Anforderungen
PHP-Version
- Minimum (vom Plugin erzwungen): PHP 8.1.
- Empfohlen: Ein aktuell unterstützter PHP 8.x-Zweig (8.2 oder 8.3) für die beste langfristige Performance und Sicherheit.
- Nicht unterstützt: PHP 8.0 oder älter. Die Metadaten des Plugins deklarieren 8.1 als Minimum und die Codebasis verwendet die 8.1-Syntax.
Erforderliche PHP-Funktionen
Die Umgebungsprüfung des Plugins erzwingt Folgendes zur Laufzeit und zeigt das Ergebnis im Reiter „System & Hilfe“ an:
openssl-Erweiterung — ausgehender HTTPS-Verkehr (AutoScout24-API, verwalteter Gemini-Endpunkt).curl-Erweiterung — wird von der WordPress-HTTP-API für ausgehende Anfragen verwendet.mbstring-Erweiterung — Multibyte-String-Verarbeitung (mb_strtoloweretc.).json-Erweiterung — Kodierung/Dekodierung von API-Payloads und Options-Blobs.gdoderimagick-Erweiterung — Verarbeitung von Bildanhängen und optionale WebP-Konvertierung.ZipArchive-Klasse — empfohlen (verwendet für Export-/Download-Bundles).- Ein beschreibbares
wp-content/uploads/-Verzeichnis für Bilder und Protokolle.
Empfohlene PHP-Laufzeiteinstellungen
Diese werden im Code nicht erzwungen, entsprechen aber den Schwellenwerten im Reiter „System & Hilfe“ des Plugins:
| Einstellung | Minimum | Empfohlen | Hinweise |
|---|---|---|---|
memory_limit | 128 MB | 256 MB+ | < 128 MB wird als „zu niedrig“ markiert; 256 MB+ ist „gut“. |
max_execution_time | 30 s | 120 s+ (oder 0 = unbegrenzt) | < 30 s wird als „zu niedrig“ markiert; 30–60 s „akzeptabel“. |
upload_max_filesize | 8 MB | 16 MB+ | Muss ein Fahrzeugbild problemlos abdecken können. |
post_max_size | 16 MB | 32 MB+ | Sollte ≥ upload_max_filesize sein. |
max_input_vars | 1000 | 3000+ | Die Reiter „Mapping“ und „Filter“ senden viele Felder gleichzeitig. |
Für WP-Cron und CLI-Ausführungen gelten dieselben Grenzwerte für den PHP-CLI- / FPM-Pool, der den Cron-Job verarbeitet.
OPcache und realpath_cache
OPcache wird in Produktionsumgebungen empfohlen. Das Plugin enthält viele kleine Klassen; OPcache reduziert den Overhead pro Anfrage erheblich. Verwenden Sie die von WordPress empfohlene OPcache-Konfiguration; es sind keine speziellen Einstellungen erforderlich.
Datenbank-Engine
- Erforderlich: Eine von WordPress unterstützte Datenbank — MySQL 5.7+ oder MariaDB 10.4+ im Einklang mit der WordPress-Empfehlung. Das Plugin erzwingt keine strengere Version, daher ist dies eine Empfehlung und keine harte Voraussetzung.
- Empfohlen für die Produktion: MySQL 8.0 oder MariaDB 10.6+ für eine bessere JSON-Verarbeitung, standardmäßiges vollständiges UTF-8 (
utf8mb4) und verbesserte Performance bei großen Tabellen. - Speicher-Engine: InnoDB. Die
CREATE TABLE-Anweisungen des Plugins basieren aufdbDelta()und erben den Zeichensatz/die Sortierung von WordPress (normalerweiseutf8mb4). - Verbindung: Standardmäßige WordPress-Zugangsdaten in
wp-config.php. Das Plugin verwendet keine separate Datenbankverbindung.
Datenbankspeicher
Das Plugin erstellt und pflegt die folgenden Daten:
- Custom Post Type
as24ci_car— ein WordPress-Beitrag pro Fahrzeug inposts/postmeta, plus Taxonomie-Begriffe interm_*. - Custom Post Type für Leads — Kontaktformular-, Probefahrt- und Suchauftrag-Leads, die als Beiträge mit Metadaten gespeichert werden.
{prefix}as24_vehicles— Schnellsuche-Tabelle mit wichtigen Fahrzeugattributen (Preis, Währung, Hashes für die Änderungserkennung usw.).- Analytics-Ereignistabelle — Seitenaufrufe, Filter-Interaktionen, Kontakt-Öffnungen und Lead-Ereignisse mit täglicher Aggregation.
- Suchauftrag-Tabelle — gespeicherte Suchen und Double-Opt-in-Abonnentendatensätze für Smart Stock Alerts.
- Optionen (
wp_options) — Plugin-Einstellungen unter dem Präfixas24ci_*, plus Transients, die für die Importsperre und die Bildwarteschlange verwendet werden.
Praktische Richtlinien zur Dimensionierung:
- Pro Fahrzeug: Einige KB in
posts+postmeta+as24_vehicles, plus Bildanhänge (Beitrag + Anhang-Metadaten). Die Speicherung der Bilddateien erfolgt auf der Festplatte, nicht in der Datenbank. - Pro Analytics-Tag: Hunderte von kleinen Zeilen auf einer ruhigen Website, Zehntausende auf einer stark frequentierten Website. Planen Sie eine regelmäßige Bereinigung ein, wenn Sie Analytics-Daten nur kurzfristig benötigen.
- Pro Lead: Eine Handvoll Zeilen (ein CPT-Beitrag + Metadaten).
Importe
- Importe werden in Batches verarbeitet. Der Batch-Wizard passt die Batch-Größe zwischen 1 und 5 Fahrzeugen pro Schritt an; Cron-Ausführungen verwenden eine konfigurierbare maximale Anzahl von Fahrzeugen pro Durchlauf.
- Bild-Downloads werden in eine Warteschlange eingereiht und asynchron verarbeitet, wenn der „Bild-Warteschlangen-Modus“ aktiviert ist, sodass eine einzelne PHP-Anfrage niemals Dutzende von Bildern gleichzeitig herunterladen muss.
- Eine Importsperre (Transient mit einer TTL von 40 Minuten) verhindert, dass sich zwei Cron-Ausführungen überschneiden.
- Re-Importe verwenden Inhalts- und Bild-Hashes zur Änderungserkennung, sodass unveränderte Fahrzeuge fast keine Schreibvorgänge in der Datenbank verursachen.
- Der Full Sync löscht lokale Fahrzeuge (und deren Anhänge), die nicht mehr im Remote-Bestand erscheinen — dies ist eine destruktive Operation, weshalb Backups vorhanden sein müssen.
Protokolle
- Plugin-Protokolle befinden sich in
wp-content/uploads/as24ci-logs/adp-car-market-hub.log. - Das aktive Protokoll wird rotiert, wenn es 10 MB überschreitet (
Logger::MAX_SIZE_BYTES). - Rotierte Archive, die älter als 7 Tage sind, werden automatisch gelöscht.
- Protokollschreibvorgänge belasten die Datenbank nicht; die reine Festplattenprotokollierung hält Importe schnell und verhindert ein Aufblähen von MySQL.
Leads
- Leads werden als dedizierter WordPress Custom Post Type mit Metadaten zur Quelle (Kontaktformular, Probefahrt, Suchauftrag), zum Einwilligungsstatus und zu Zeitstempeln gespeichert.
- Das Lead-Volumen ist im Vergleich zu den Fahrzeugen normalerweise gering, aber jeder Lead stellt personenbezogene Daten dar — Richtlinien zur Aufbewahrung finden Sie im Abschnitt „Datenschutz, Sicherheit und Compliance“.
- Ein CSV-Export wird bereitgestellt, damit Leads in ein externes CRM verschoben und regelmäßig aus WordPress gelöscht werden können.
Analytics
- Analytics-Ereignisse werden während der normalen Website-Nutzung in eine dedizierte Tabelle eingefügt (Seitenaufrufe, Filter-Klicks, Kontakt-Öffnungen, Lead-Konvertierungen).
- Aggregationsabfragen speisen das Dashboard-Widget und den Reiter „Analytics“; sie lesen ausschließlich aus dieser Tabelle.
- Bei Websites mit langer Laufzeit sorgt eine regelmäßige Bereinigung der Ereignistabelle (z. B. Aufbewahrung nur der letzten 12 Monate) dafür, dass die Abfragezeiten begrenzt bleiben. Führen Sie dies über ein Datenbank-Backup- und anschließendes Truncate-Verfahren oder über einen eigenen geplanten Job durch; das Plugin bereinigt Ereignisse nicht automatisch.
Betriebliche Skalierung
- Das Plugin skaliert linear mit der Größe des Fahrzeugbestands. Die Hauptlasten sind Bild-Downloads (Netzwerk + Festplatte + CPU der Bildbibliothek) und Analytics-Schreibvorgänge (Datenbank-I/O).
- Für große Autohäuser (1000+ Fahrzeuge) wird Folgendes empfohlen:
- PHP 8.2/8.3 mit OPcache.
- 512 MB+ PHP
memory_limit. - Externer Cron, der
/as24ci/v1/cron-importalle 5–10 Minuten auslöst. - Object Cache (Redis oder Memcached) für WordPress.
- MySQL 8 / MariaDB 10.6+ auf dedizierten Ressourcen.
- Für kleine Autohäuser (< 100 Fahrzeuge) ist die Baseline von WordPress (256 MB Speicher, 120 s Ausführungszeit) mehr als ausreichend.
Empfohlenes Produktions-Setup
- PHP 8.2 oder 8.3 (PHP-FPM) mit aktiviertem OPcache.
memory_limit = 256M(oder 512M für große Bestände),max_execution_time = 300,max_input_vars = 3000.- Alle erforderlichen Erweiterungen installiert:
openssl,curl,mbstring,json,gdoderimagick, plusZipArchive. - MySQL 8.0 oder MariaDB 10.6+ mit dem Zeichensatz
utf8mb4und InnoDB-Speicher. - Tägliche Datenbank-Backups einschließlich der benutzerdefinierten Tabellen des Plugins.
- Regelmäßige Bereinigung von Analytics-Ereignissen und exportierten Leads, falls Bedenken hinsichtlich einer mehrjährigen Aufbewahrung bestehen.
- Object Cache (Redis oder Memcached) auf stark frequentierten Websites.
Betriebliche Hinweise
- Alle Datenbankzugriffe erfolgen über
$wpdbmitprepare(), sodass das Plugin die Prepared-Statement-Schutzmechanismen von WordPress erbt. - Die benutzerdefinierten Tabellen werden bei der Plugin-Aktivierung und bei Upgrades der Berechtigungsversion über
dbDelta()erstellt und migriert. Manuelle Schema-Anpassungen sind nicht erforderlich. - Das Plugin speichert das AutoScout24 Client Secret nicht in Quelldateien; es wird als WordPress-Option gespeichert. Behandeln Sie Datenbank-Backups so, als ob sie sensible Daten enthalten. Der vom KI-Assistenten verwendete verwaltete Gemini-API-Schlüssel wird von AD Promotion in
AS24CI\Ai_Config(einer PHP-Konstante) konfiguriert und nicht als WordPress-Option gespeichert. - Der Reiter „System & Hilfe“ im WordPress-Adminbereich bildet jede oben aufgeführte PHP- und Erweiterungsprüfung mit Live-Werten der laufenden Website ab.
- Der Wechsel von PHP-Versionen oder -Erweiterungen auf dem Host erfordert keine Neukonfiguration des Plugins — überprüfen Sie den Reiter „System & Hilfe“ nach der Änderung einfach erneut.
Fehlerbehebung
- „Anforderungen nicht erfüllt“ im Reiter „System & Hilfe“: Identifizieren Sie das fehlende Element (PHP-Version, fehlende Erweiterung, zu wenig Speicher) und passen Sie die PHP-Laufzeitumgebung entsprechend an.
Allowed memory size of … bytes exhaustedwährend der Importe: Erhöhen Siememory_limitauf 256 MB oder 512 MB und verringern Sie die Fahrzeug-Batch-Größe pro Cron-Durchlauf.- Importe bleiben bei „Bildverarbeitung“ hängen: Stellen Sie sicher, dass GD oder Imagick installiert ist und das Uploads-Verzeichnis beschreibbar ist; überprüfen Sie die Plugin-Protokolldatei auf bildspezifische Fehler.
Maximum execution time of … seconds exceeded: Erhöhen Siemax_execution_timefür den vom Cron verwendeten FPM-Pool und bevorzugen Sie die Bild-Warteschlange gegenüber Inline-Bild-Downloads.- Benutzerdefinierte Tabellen fehlen nach einer manuellen Datenbank-Wiederherstellung: Deaktivieren Sie das Plugin und aktivieren Sie es erneut, um die Upgrade-Routine
dbDelta()erneut auszuführen. - Plugin-Protokollverzeichnis wächst unerwartet an: Möglicherweise ist die ausführliche Protokollierung aktiviert; deaktivieren Sie diese im Reiter „Automatisierung/Protokolle“, sobald das Problem diagnostiziert ist. Die Rotation greift zwar weiterhin, aber der ausführliche Modus erzeugt viele Einträge pro Fahrzeug.
- Analytics-Abfragen auf sehr großen Websites langsam: Bereinigen Sie ältere Ereignisse (nach der Erstellung eines Backups) und stellen Sie sicher, dass der Datenbankserver über genügend Buffer Pool / RAM verfügt.