Documentazione · Requisiti di sistema
Requisiti di PHP e database
Introduzione
ADP Car Market Hub è un moderno plugin PHP 8 che utilizza namespace, tipizzazione forte in molti punti e lo strato di astrazione del database di WordPress ($wpdb, dbDelta()). Funziona sullo stesso stack PHP e database di WordPress stesso, ma aggiunge le proprie tabelle personalizzate per veicoli, eventi di analisi e avvisi di ricerca, oltre a log basati su file.
Questo documento descrive la versione e le estensioni del linguaggio PHP, il motore di database e le considerazioni sullo storage, nonché le implicazioni operative di importazioni, log, lead e analisi.
Quando utilizzare questo documento
Utilizza questo documento quando:
- Configuri il runtime PHP per un nuovo host WordPress.
- Esegui un audit di un ambiente PHP esistente rispetto ai requisiti del plugin.
- Pianifichi lo storage e la crescita del database per il sito di una concessionaria.
- Analizzi problemi di prestazioni o memoria durante le importazioni o la generazione tramite IA.
- Hai bisogno di dimensionare il database per la conservazione dei dati di analisi e la gestione dei lead.
Panoramica
Il plugin utilizza lo stack di runtime standard di WordPress:
- Linguaggio PHP: Richiede PHP 8.1+ (impostato nell'intestazione del plugin,
readme.txtecomposer.json). - Estensioni PHP: Si affida a
openssl,curl,mbstring,jsone a una tragd/imagickper l'elaborazione delle immagini. La scheda Sistema e Aiuto mostra ancheZipArchiveper i pacchetti di esportazione. - Accesso al database: Avviene esclusivamente tramite
$wpdbcon prepared statement. Nessun utilizzo diretto di PDO omysqli. - Tabelle personalizzate: Create all'attivazione tramite
dbDelta(); una per i record dei veicoli ({prefix}as24_vehicles), una per gli eventi di analisi, una per gli iscritti agli avvisi di ricerca. - Tabelle di WordPress: Le tabelle standard
posts,postmeta,term_*,optionseusersvengono utilizzate per il CPTas24ci_car, le tassonomie dei veicoli, le impostazioni del plugin, i lead (un CPT separato) e le capability. - Log basati su file: Scritti in
wp-content/uploads/as24ci-logs/, non nel database. Ruotati a 10 MB con una conservazione di 7 giorni.
Requisiti
Versione PHP
- Minima (imposta dal plugin): PHP 8.1.
- Consigliata: Un ramo PHP 8.x attualmente supportato (8.2 o 8.3) per garantire le migliori prestazioni a lungo termine e una postura di sicurezza ottimale.
- Non supportata: PHP 8.0 o versioni precedenti. I metadati del plugin dichiarano 8.1 come versione minima e la base di codice utilizza la sintassi di PHP 8.1.
Funzionalità PHP richieste
Il controllo dell'ambiente del plugin impone quanto segue a runtime e mostra il risultato nella scheda Sistema e Aiuto:
- Estensione
openssl— HTTPS in uscita (API di AutoScout24, endpoint Gemini gestito). - Estensione
curl— utilizzata dall'API HTTP di WordPress per le richieste in uscita. - Estensione
mbstring— gestione delle stringhe multi-byte (mb_strtolowerecc.). - Estensione
json— codifica/decodifica dei payload API e dei blob di opzioni. - Estensione
gdoimagick— elaborazione degli allegati immagine e conversione WebP opzionale. - Classe
ZipArchive— consigliata (utilizzata per i pacchetti di esportazione/download). - Una directory
wp-content/uploads/scrivibile per immagini e log.
Impostazioni di runtime PHP consigliate
Queste non sono imposte nel codice ma corrispondono alle soglie presenti nella scheda Sistema e Aiuto del plugin:
| Impostazione | Minimo | Consigliato | Note |
|---|---|---|---|
memory_limit | 128 MB | 256 MB+ | < 128 MB viene segnalato come "troppo basso"; 256 MB+ è "buono". |
max_execution_time | 30 s | 120 s+ (o 0 = illimitato) | < 30 s viene segnalato come "troppo basso"; 30–60 s "accettabile". |
upload_max_filesize | 8 MB | 16 MB+ | Deve coprire comodamente una singola immagine del veicolo. |
post_max_size | 16 MB | 32 MB+ | Dovrebbe essere ≥ upload_max_filesize. |
max_input_vars | 1000 | 3000+ | Le schede di mappatura e dei filtri inviano molti campi contemporaneamente. |
Per le esecuzioni di WP-Cron e CLI, gli stessi limiti si applicano alla CLI PHP / al pool FPM che gestisce il cron job.
OPcache e realpath cache
OPcache è consigliato in produzione. Il plugin contiene molte classi di piccole dimensioni; OPcache riduce sostanzialmente l'overhead per richiesta. Utilizza la configurazione OPcache consigliata da WordPress; non sono richieste impostazioni speciali.
Motore di database
- Richiesto: Un database supportato da WordPress — MySQL 5.7+ o MariaDB 10.4+ in linea con la raccomandazione di WordPress. Il plugin non impone una versione più restrittiva, pertanto questa è una raccomandazione piuttosto che un requisito rigido.
- Consigliato per la produzione: MySQL 8.0 o MariaDB 10.6+ per una migliore gestione del formato JSON, UTF-8 completo (
utf8mb4) per impostazione predefinita e prestazioni migliorate su tabelle di grandi dimensioni. - Motore di storage: InnoDB. Le istruzioni
CREATE TABLEdel plugin si affidano adbDelta()ed ereditano il set di caratteri/collation di WordPress (tipicamenteutf8mb4). - Connessione: Credenziali standard di WordPress in
wp-config.php. Il plugin non utilizza una connessione al database separata.
Storage del database
Il plugin crea e mantiene i seguenti dati:
- Custom post type
as24ci_car— un post WordPress per veicolo inposts/postmeta, oltre ai termini di tassonomia interm_*. - Custom post type per i lead — lead da moduli di contatto, richieste di test drive e avvisi di ricerca memorizzati come post con metadati.
{prefix}as24_vehicles— tabella di ricerca rapida con gli attributi chiave del veicolo (prezzo, valuta, hash utilizzati per il rilevamento delle modifiche, ecc.).- Tabella degli eventi di analisi — visualizzazioni di pagina, interazioni con i filtri, eventi di apertura dei contatti ed eventi dei lead con aggregazione giornaliera.
- Tabella degli avvisi di ricerca — ricerche salvate e record degli iscritti con double opt-in per gli Smart Stock Alerts.
- Opzioni (
wp_options) — impostazioni del plugin sotto il prefissoas24ci_*, oltre ai transient utilizzati per il blocco dell'importazione e la coda delle immagini.
Guida pratica al dimensionamento:
- Per veicolo: Pochi KB in
posts+postmeta+as24_vehicles, oltre agli allegati immagine (post + metadati dell'allegato). Lo storage binario delle immagini avviene su disco, non nel database. - Per giorno di analisi: Centinaia di righe di piccole dimensioni su un sito poco trafficato, decine di migliaia su uno molto attivo. Pianifica un'epurazione periodica se hai bisogno solo di analisi a breve termine.
- Per lead: Una manciata di righe (un post CPT + metadati).
Importazioni
- Le importazioni sono suddivise in lotti. Il Batch-Wizard adatta la dimensione del lotto tra 1 e 5 veicoli per passaggio; le esecuzioni cron utilizzano un'impostazione configurabile per il numero massimo di veicoli per esecuzione.
- I download delle immagini vengono inseriti in coda ed elaborati in modo asincrono quando è abilitata la "modalità coda immagini", in modo che una singola richiesta PHP non debba mai scaricare decine di immagini contemporaneamente.
- Un blocco di importazione (transient con un TTL di 40 minuti) impedisce la sovrapposizione di due esecuzioni cron.
- Le re-importazioni utilizzano hash dei contenuti e delle immagini per il rilevamento delle modifiche, in modo che i veicoli non modificati non comportino quasi nessuna scrittura nel database.
- La sincronizzazione completa (Full Sync) elimina i veicoli locali (e i relativi allegati) che non compaiono più nell'elenco remoto — si tratta di un'operazione distruttiva, pertanto è necessario disporre di backup.
Log
- I log del plugin risiedono in
wp-content/uploads/as24ci-logs/adp-car-market-hub.log. - Il log attivo viene ruotato quando supera i 10 MB (
Logger::MAX_SIZE_BYTES). - Gli archivi ruotati più vecchi di 7 giorni vengono eliminati automaticamente.
- Le scritture dei log non influiscono sul database; la registrazione solo su disco mantiene rapide le importazioni ed evita di gonfiare MySQL.
Lead
- I lead sono memorizzati come un custom post type dedicato WordPress con metadati relativi alla sorgente (modulo di contatto, test drive, avviso di ricerca), allo stato del consenso e ai timestamp.
- Il volume dei lead è normalmente ridotto rispetto a quello dei veicoli, ma ogni lead rappresenta dati personali — consulta la sezione Privacy, sicurezza e conformità per indicazioni sulla conservazione.
- Viene fornita un'esportazione CSV in modo che i lead possano essere trasferiti a un CRM esterno ed eliminati periodicamente da WordPress.
Analisi
- Gli eventi di analisi vengono inseriti in una tabella dedicata durante il normale utilizzo del sito (visualizzazioni di pagina, clic sui filtri, aperture dei contatti, conversioni dei lead).
- Le query di aggregazione alimentano il widget della bacheca e la scheda Analisi; leggono esclusivamente da questa tabella.
- Per i siti attivi da molto tempo, l'epurazione periodica della tabella degli eventi (ad esempio, conservando solo gli ultimi 12 mesi) mantiene limitati i tempi di esecuzione delle query. Esegui questa operazione tramite una procedura di backup e successivo svuotamento (truncate) del database o tramite un tuo job pianificato; il plugin non elimina automaticamente gli eventi.
Scalabilità operativa
- Il plugin scala linearmente con le dimensioni dell'inventario. I costi dominanti sono i download delle immagini (rete + disco + CPU della libreria di immagini) e le scritture di analisi (I/O del database).
- Per i grandi rivenditori (oltre 1000 veicoli), preferisci:
- PHP 8.2/8.3 con OPcache abilitato.
memory_limitPHP di almeno 512 MB.- Cron esterno che attiva
/as24ci/v1/cron-importogni 5–10 minuti. - Cache degli oggetti (Redis o Memcached) per WordPress.
- MySQL 8 / MariaDB 10.6+ su risorse dedicate.
- Per i piccoli rivenditori (< 100 veicoli), la configurazione di base di WordPress (256 MB di memoria, 120 s di tempo di esecuzione) è più che sufficiente.
Configurazione consigliata per la produzione
- PHP 8.2 o 8.3 (PHP-FPM) con OPcache abilitato.
memory_limit = 256M(o 512M per inventari di grandi dimensioni),max_execution_time = 300,max_input_vars = 3000.- Tutte le estensioni richieste installate:
openssl,curl,mbstring,json,gdoimagick, oltre aZipArchive. - MySQL 8.0 o MariaDB 10.6+ con set di caratteri
utf8mb4e storage InnoDB. - Backup giornalieri del database, incluse le tabelle personalizzate del plugin.
- Epurazione periodica degli eventi di analisi e dei lead esportati in caso di requisiti di conservazione pluriennale.
- Cache degli oggetti (Redis o Memcached) sui siti molto trafficati.
Note operative
- Tutti gli accessi al database passano attraverso
$wpdbconprepare(), pertanto il plugin eredita le protezioni contro le SQL injection tramite prepared statement di WordPress. - Le tabelle personalizzate vengono create e migrate tramite
dbDelta()all'attivazione del plugin e agli aggiornamenti di versione delle capability. Non sono necessarie modifiche manuali dello schema. - Il plugin non memorizza il client secret di AutoScout24 nei file sorgente; viene salvato come opzione di WordPress. Tratta i backup del database come contenenti dati sensibili. La chiave API Gemini gestita utilizzata dall'assistente IA è configurata da AD Promotion in
AS24CI\Ai_Config(una costante PHP) e non viene memorizzata come opzione di WordPress. - La scheda Sistema e Aiuto nell'amministrazione di WordPress riproduce ogni controllo di PHP e delle estensioni sopra elencato con i valori in tempo reale del sito in esecuzione.
- Il passaggio a versioni di PHP o estensioni diverse sull'host non richiede alcuna riconfigurazione del plugin — ricontrolla semplicemente la scheda Sistema e Aiuto dopo la modifica.
Risoluzione dei problemi
- "Requisiti non soddisfatti" nella scheda Sistema e Aiuto: Identifica l'elemento mancante (versione PHP, estensione mancante, memoria insufficiente) e adegua il runtime PHP di conseguenza.
Allowed memory size of … bytes exhausteddurante le importazioni: Aumentamemory_limita 256 MB o 512 MB e riduci la dimensione del lotto di veicoli per singola esecuzione cron.- Le importazioni si bloccano su "elaborazione immagini": Verifica che GD o Imagick sia installato e che la directory degli upload sia scrivibile; controlla il file di log del plugin per errori specifici relativi alle immagini.
Maximum execution time of … seconds exceeded: Aumentamax_execution_timeper il pool FPM utilizzato dal cron e preferisci la coda delle immagini rispetto ai download in linea delle immagini.- Tabelle personalizzate mancanti dopo un ripristino manuale del database: Disattiva e riattiva il plugin per eseguire nuovamente la routine di aggiornamento di
dbDelta(). - La directory dei log del plugin cresce in modo imprevisto: Potrebbe essere abilitata la registrazione dettagliata (verbose); disabilitala nella scheda Automazione/Log una volta diagnosticato il problema. La rotazione si applica comunque, ma la modalità dettagliata produce molte voci per singolo veicolo.
- Query di analisi lente su siti molto grandi: Elimina gli eventi più vecchi (dopo aver effettuato un backup) e assicurati che il server del database disponga di sufficiente buffer pool / RAM.