logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri
03/10/2025, by Ivan

Il mezzo principale per definire una connessione al database è l’array $databases in settings.php. Come suggerisce il nome, $databases consente di definire più connessioni ai database. Supporta anche la definizione di più target. La connessione al database non viene aperta (l’oggetto di connessione non viene creato) fino a quando il primo frammento di codice non tenta di eseguire una query su quel database.

Chiave di connessione

$databases['default'] // La connessione al database.

La chiave di connessione è un identificatore univoco per una determinata connessione al database. Deve essere unica per un sito e ci deve sempre essere una connessione default, che sarà il database principale di Drupal. Nella maggior parte dei siti sarà l’unica connessione definita.

Target

$databases['default']['default'] // Il target del database.

Ogni chiave di connessione deve avere uno o più target. Un target è un database che può essere usato, se disponibile. Il target default deve essere sempre definito per ogni chiave di connessione. Se un target richiesto non è definito, il sistema userà automaticamente il target default.

L’uso principale dei target è per configurazioni master/replica. Il target default è il server SQL principale. È possibile poi definire uno o più target replica (in alcune situazioni, replica è l’unico target alternativo valido, ad esempio nelle query statiche). Le query contrassegnate per tentare l’uso di un server replica, se disponibile, verranno eseguite sul target replica. Se disponibile, questa connessione sarà aperta (se non lo è già) e la query sarà eseguita sul server replica. Se non disponibile, la query sarà eseguita invece sul server master. Questo garantisce un fallback trasparente, permettendo al codice di sfruttare i server replica se disponibili, ma continuando a funzionare anche senza di essi.

Sintassi di $databases

L’array $databases è un array annidato di almeno tre livelli. Il primo livello definisce le chiavi delle connessioni al database. Il secondo livello definisce i target del database. Il valore di ogni target è un array di informazioni di connessione per quella chiave/target. Alcuni esempi chiariscono il funzionamento:

$databases['default']['default'] = array(
  'driver' => 'mysql',
  'database' => 'drupaldb',
  'username' => 'username',
  'password' => 'secret',
  'host' => 'localhost',
);

L’array sopra definisce una chiave di connessione (“default”) con un target (“default”). Questa connessione usa un database MySQL (chiave “driver”) sull’host locale, con nome database “drupaldb”, username “username” e password “secret”. Questo è il caso tipico di una installazione Drupal con un singolo server SQL ed è sufficiente per la stragrande maggioranza dei siti.

Per una configurazione master/replica si può definire ad esempio:

$databases['default']['default'] = array(
  'driver' => 'mysql',
  'database' => 'drupaldb1',
  'username' => 'username',
  'password' => 'secret',
  'host' => 'dbserver1',
);
$databases['default']['replica'][] = array(
  'driver' => 'mysql',
  'database' => 'drupaldb2',
  'username' => 'username',
  'password' => 'secret',
  'host' => 'dbserver2',
);
$databases['default']['replica'][] = array(
  'driver' => 'mysql',
  'database' => 'drupaldb3',
  'username' => 'username',
  'password' => 'secret',
  'host' => 'dbserver3',
);

Questa configurazione fornisce un server “default” e due server “replica”. Nota che la chiave replica è un array. Se un target è definito come array di connessioni, uno dei server sarà scelto casualmente per ogni richiesta di pagina. Così, in una pagina tutte le query verso replica andranno a dbserver2, nella successiva a dbserver3, e così via.

$databases['default']['default'] = array(
  'driver' => 'mysql',
  'database' => 'drupaldb1',
  'username' => 'username',
  'password' => 'secret',
  'host' => 'dbserver1',
);
$databases['extra']['default'] = array(
  'driver' => 'sqlite',
  'database' => 'files/extradb.sqlite',
);

Questa configurazione definisce un database Drupal principale e un database aggiuntivo chiamato “extra”, che usa SQLite. Nota che la configurazione per SQLite è strutturata diversamente da quella MySQL. Ogni driver ha una configurazione propria, adeguata alle sue necessità.

Ricorda: indipendentemente da quante connessioni definisci, Drupal non aprirà la connessione finché non sarà effettivamente usata.

PDO richiesto

Poiché la libreria PHP PDO è ora obbligatoria per il livello database di Drupal, ti serve un hosting che la includa per poter eseguire Drupal.

Opzioni PDO

Le costanti PDO e le opzioni specifiche per driver possono essere specificate nell’array $databases usando la chiave pdo, ad esempio:

$databases['default']['default'] = array(
  'driver' => 'mysql',
  'database' => 'drupaldb',
  'username' => 'username',
  'password' => 'secret',
  'host' => 'dbserver1',
  'pdo' => array(PDO::ATTR_TIMEOUT => 2.0, PDO::MYSQL_ATTR_COMPRESS => 1),
);