Dokumentation · Systemanforderungen
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 Suchabos sowie dateibasierte Logs hinzu.
Dieses Dokument beschreibt die PHP-Sprachversion und -Erweiterungen, Überlegungen zur Datenbank-Engine und zum Speicherplatz sowie die betrieblichen Auswirkungen von Importen, Logs, 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 anhand der Plugin-Anforderungen überprüfen.
- Den Datenbank-Speicherplatz und das Wachstum für eine Garagen-Website planen.
- Performance- oder Speicherprobleme während Importen oder der KI-Generierung untersuchen.
- Die Datenbankgrösse für die Aufbewahrung von Analytics-Daten und das Lead-Management dimensionieren müssen.
Übersicht
Das Plugin verwendet den Standard-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 Tab "System & Hilfe" zeigt zudemZipArchivefür Export-Bundles an. Zwei weitere Erweiterungen sind optional und werden nur benötigt, wenn die entsprechende Importquelle verwendet wird:imapfür die E-Mail-Importquelle undssh2für SFTP-Feed-Standorte (siehe die Verbindungsquellen unten). - Datenbankzugriff: Erfolgt ausschliesslich ü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 Suchabo-Abonnenten. - WordPress-Tabellen: Die Standardtabellen
posts,postmeta,term_*,optionsunduserswerden für denas24ci_carCPT, Fahrzeug-Taxonomien, Plugin-Einstellungen, Leads (ein separater CPT) und Capabilities verwendet. - Dateibasierte Logs: 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 Leistung und Sicherheitslage.
- Nicht unterstützt: PHP 8.0 oder älter. Die Metadaten des Plugins deklarieren 8.1 als Minimum und die Codebasis verwendet die PHP 8.1-Syntax.
Erforderliche PHP-Funktionen
Die Umgebungsprüfung des Plugins erzwingt zur Laufzeit Folgendes und zeigt das Ergebnis im Reiter "System & Hilfe" an:
openssl-Erweiterung – ausgehendes HTTPS (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 Option-Blobs.gdoderimagick-Erweiterung – Verarbeitung von Bildanhängen und optionale WebP-Konvertierung.ZipArchive-Klasse – empfohlen (verwendet für Export-/Download-Bundles und für ZIP-Datei-Uploads auf der Verbindungsseite).- Ein beschreibbares
wp-content/uploads/-Verzeichnis für Bilder und Logs.
Optional, nur erforderlich, wenn eine bestimmte Verbindungsquelle verwendet wird:
imap-Erweiterung – erforderlich für die Quelle E-Mail-Import. Wenn diese fehlt, ist die E-Mail-Import-Karte nicht verfügbar und es können stattdessen andere Quellen (AutoScout24, mobile.de, carcuro, ein Feed, Datei-Upload) verwendet werden.ssh2-Erweiterung (oder ein SFTP-Stream-Wrapper) – nur erforderlich, wenn ein automatischer Feed einensftp://-Speicherort verwendet. Einfache FTP/FTPS- undhttps://-Feed-Speicherorte benötigen diese nicht.
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. |
post_max_size | 16 MB | 32 MB+ | Sollte ≥ upload_max_filesize sein. |
max_input_vars | 1000 | 3000+ | Die Reiter für Mapping und Filter senden viele Felder gleichzeitig. |
Für WP-Cron- und CLI-Ausführungen gelten dieselben Limits für den PHP-CLI- / FPM-Pool, der den Cronjob 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+ gemäss der WordPress-Empfehlung. Das Plugin erzwingt keine strengere Version, daher handelt es sich hierbei um eine Empfehlung und nicht um eine harte Anforderung.
- Empfohlen für die Produktion: MySQL 8.0 oder MariaDB 10.6+ für eine bessere JSON-Verarbeitung, standardmässig vollständiges UTF-8 (
utf8mb4) und verbesserte Leistung bei grossen Tabellen. - Speicher-Engine: InnoDB. Die
CREATE TABLE-Anweisungen des Plugins basieren aufdbDelta()und erben den WordPress-Zeichensatz/Kollation (normalerweiseutf8mb4). - Verbindung: Standardmässige WordPress-Zugangsdaten in
wp-config.php. Das Plugin verwendet keine separate Datenbankverbindung.
Datenbank-Speicher
Das Plugin erstellt und verwaltet 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 Suchabo-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.).- Tabelle für Analytics-Events – Seitenaufrufe, Filter-Interaktionen, Kontakt-Öffnungen und Lead-Events mit täglicher Aggregation.
- Suchabo-Tabelle – gespeicherte Suchen und Double-Opt-In-Abonnentendaten für Smart Stock Alerts.
- Optionen (
wp_options) – Plugin-Einstellungen unter demas24ci_*-Präfix, plus Transients, die für die Importsperre und die Bildwarteschlange verwendet werden.
Praktische Grössenorientierung:
- Pro Fahrzeug: Einige KB in
posts+postmeta+as24_vehicles, plus Bildanhänge (Beitrag + Anhang-Metadaten). Die binäre Bildspeicherung erfolgt auf der Festplatte, nicht in der Datenbank. - Pro Analytics-Tag: Hunderte von kleinen Zeilen auf einer ruhigen Website, Zehntausende auf einer stark besuchten Website. Planen Sie eine regelmässige Bereinigung ein, wenn Sie nur kurzfristige Analysen benötigen.
- Pro Lead: Eine Handvoll Zeilen (ein CPT-Beitrag + Metadaten).
Importe
- Importe werden in Batches aufgeteilt. Der Batch-Wizard passt die Batch-Grösse zwischen 1 und 5 Fahrzeugen pro Schritt an; Cron-Ausführungen verwenden eine konfigurierbare maximale Anzahl von Fahrzeugen pro Durchlauf.
- Bilddownloads werden in eine Warteschlange eingereiht und asynchron verarbeitet, wenn der "Bild-Warteschlangen-Modus" aktiviert ist, sodass eine einzelne PHP-Anfrage nie Dutzende von Bildern 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 ein destruktiver Vorgang, weshalb Backups vorhanden sein müssen.
Logs
- Plugin-Logs befinden sich in
wp-content/uploads/as24ci-logs/adp-car-market-hub.log. - Das aktive Log wird rotiert, wenn es 10 MB überschreitet (
Logger::MAX_SIZE_BYTES). - Rotierte Archive, die älter als 7 Tage sind, werden automatisch gelöscht.
- Log-Schreibvorgänge belasten die Datenbank nicht; die reine Festplattenprotokollierung hält Importe schnell und vermeidet ein Aufblähen von MySQL.
Leads
- Leads werden als dedizierter WordPress Custom Post Type mit Metadaten für die Quelle (Kontaktformular, Probefahrt, Suchabo), den Einwilligungsstatus und Zeitstempel gespeichert.
- Das Lead-Volumen ist im Vergleich zu den Fahrzeugen normalerweise gering, aber jeder Lead enthält personenbezogene Daten – Richtlinien zur Aufbewahrung finden Sie im Abschnitt "Datenschutz, Sicherheit und Compliance".
- Ein CSV-Export ist vorhanden, sodass Leads in ein externes CRM verschoben und regelmässig aus WordPress gelöscht werden können.
Analytics
- Analytics-Events 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 ausschliesslich aus dieser Tabelle.
- Bei Websites mit langer Laufzeit hält eine regelmässige Bereinigung der Event-Tabelle (z. B. Aufbewahrung nur der letzten 12 Monate) die Abfragezeiten in Grenzen. Führen Sie dies über ein Datenbank-Backup-und-Truncate-Verfahren oder über Ihren eigenen geplanten Job durch; das Plugin bereinigt Events nicht automatisch.
Betriebliche Skalierung
- Das Plugin skaliert linear mit der Grösse des Fahrzeugbestands. Die dominierenden Kostenfaktoren sind Bilddownloads (Netzwerk + Festplatte + CPU der Bildbibliothek) und Analytics-Schreibvorgänge (Datenbank-I/O).
- Für grosse Garagen (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 Garagen (< 100 Fahrzeuge) ist die WordPress-Baseline (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 grosse 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
utf8mb4-Zeichensatz und InnoDB-Speicher. - Tägliche Datenbank-Backups einschliesslich der benutzerdefinierten Tabellen des Plugins.
- Regelmässiges Bereinigen von Analytics-Ereignissen und exportierten Leads, falls Sie Bedenken hinsichtlich einer mehrjährigen Aufbewahrung haben.
- Object Cache (Redis oder Memcached) auf stark frequentierten Websites.
Betriebliche Hinweise
- Jeder Datenbankzugriff erfolgt über
$wpdbmitprepare(), sodass das Plugin die Prepared-Statement-Schutzmechanismen von WordPress erbt. - Die benutzerdefinierten Tabellen werden bei der Plugin-Aktivierung und bei Upgrades der Funktionsversion über
dbDelta()erstellt und migriert. Manuelle Schemaänderungen sind nicht erforderlich. - Das Plugin speichert keine Zugangsdaten für Datenquellen in Quelldateien. Das AutoScout24-Client-Secret, das Carcuro-Firmen-Token und die Feed-/Postfach-Passwörter werden auf der zentralen Seite Verbindungen (
as24ci-universal-import) eingegeben und verschlüsselt (encrypted at rest) in der Datenbank über den Secret-Store des Plugins gespeichert, nicht als Klartext-Optionen. (In früheren Versionen befanden sich die AutoScout24-API-Zugangsdaten unter Einstellungen.) Behandeln Sie Datenbank-Backups so, als ob sie sensible Daten enthalten. Der vom AI Assistant verwendete verwaltete Gemini-API-Schlüssel wird von AD Promotion inAS24CI\Ai_Config(einer PHP-Konstante) konfiguriert und nicht als WordPress-Option gespeichert. - Der Tab "System & Hilfe" im WordPress-Admin listet jede oben aufgeführte PHP- und Erweiterungsprüfung mit Live-Werten der laufenden Website auf.
- Der Wechsel von PHP-Versionen oder -Erweiterungen auf dem Host erfordert keine Neukonfiguration des Plugins – überprüfen Sie nach der Änderung einfach den Tab "System & Hilfe" erneut.
Fehlerbehebung
- "Anforderungen nicht erfüllt" im Tab "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 des Imports: Erhöhen Siememory_limitauf 256 MB oder 512 MB und verringern Sie die Fahrzeug-Batchgrösse pro Cron-Durchlauf.- Importe bleiben bei "Bildverarbeitung" stecken: Stellen Sie sicher, dass GD oder Imagick installiert ist und dass das Uploads-Verzeichnis beschreibbar ist; überprüfen Sie die Plugin-Logdatei 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-Bilddownloads.- Benutzerdefinierte Tabellen fehlen nach einer manuellen Datenbank-Wiederherstellung: Deaktivieren Sie das Plugin und aktivieren Sie es erneut, um die
dbDelta()-Upgrade-Routine erneut auszuführen. - Plugin-Logverzeichnis wächst unerwartet schnell: Möglicherweise ist die ausführliche Protokollierung (Verbose Logging) aktiviert; deaktivieren Sie diese im Tab "Automatisierung/Logs", sobald das Problem diagnostiziert ist. Die Rotation gilt weiterhin, aber der Verbose-Modus erzeugt sehr viele Einträge pro Fahrzeug.
- Langsame Analytics-Abfragen auf sehr grossen Websites: Bereinigen Sie ältere Ereignisse (nach dem Sichern) und stellen Sie sicher, dass der Datenbankserver über genügend Buffer Pool / RAM verfügt.