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.txt und composer.json).
  • PHP-Erweiterungen: Basiert auf openssl, curl, mbstring, json und entweder gd / imagick für die Bildverarbeitung. Der Tab "System & Hilfe" zeigt zudem ZipArchive für Export-Bundles an. Zwei weitere Erweiterungen sind optional und werden nur benötigt, wenn die entsprechende Importquelle verwendet wird: imap für die E-Mail-Importquelle und ssh2 für SFTP-Feed-Standorte (siehe die Verbindungsquellen unten).
  • Datenbankzugriff: Erfolgt ausschliesslich über $wpdb mit Prepared Statements. Keine direkte Verwendung von PDO oder mysqli.
  • 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_*, options und users werden für den as24ci_car CPT, 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_strtolower etc.).
  • json-Erweiterung – Kodierung/Dekodierung von API-Payloads und Option-Blobs.
  • gd oder imagick-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 einen sftp://-Speicherort verwendet. Einfache FTP/FTPS- und https://-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:

EinstellungMinimumEmpfohlenHinweise
memory_limit128 MB256 MB+< 128 MB wird als "zu niedrig" markiert; 256 MB+ ist "gut".
max_execution_time30 s120 s+ (oder 0 = unbegrenzt)< 30 s wird als "zu niedrig" markiert; 30–60 s "akzeptabel".
upload_max_filesize8 MB16 MB+Muss ein Fahrzeugbild problemlos abdecken.
post_max_size16 MB32 MB+Sollte ≥ upload_max_filesize sein.
max_input_vars10003000+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 auf dbDelta() und erben den WordPress-Zeichensatz/Kollation (normalerweise utf8mb4).
  • 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 in posts / postmeta, plus Taxonomie-Begriffe in term_*.
  • 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 dem as24ci_*-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-import alle 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, gd oder imagick, plus ZipArchive.
  • 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 $wpdb mit prepare(), 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 in AS24CI\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 exhausted während des Imports: Erhöhen Sie memory_limit auf 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 Sie max_execution_time fü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.

Verwandte Dokumente