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

Lavorare con il database in Drupal 7 – Lezione 2 – Configurazione del database

14/10/2025, by Ivan

Il principale strumento per definire la connessione al database in Drupal è l’array $databases nel file settings.php. Come suggerisce il nome stesso, $databases consente di definire più connessioni al database e supporta anche la definizione di più target (obiettivi). La connessione non viene aperta (cioè l’oggetto di connessione non viene creato) finché una parte del codice non esegue effettivamente una query sul database.

Chiave di connessione

La chiave di connessione è un identificatore univoco assegnato alla connessione del database. Essa deve essere unica per il sito e definita come predefinita per il database principale. Nella maggior parte dei casi, un sito Drupal utilizza una singola connessione.

Target di connessione

Ogni connessione può avere uno o più target. Un target rappresenta un’istanza alternativa del database, che può essere utilizzata se disponibile. Se il target richiesto non è definito, Drupal utilizzerà in modo trasparente il target predefinito, che deve sempre esistere.

I target vengono principalmente utilizzati per la replica master/slave. Per impostazione predefinita, il target “default” indica il server SQL principale. Uno o più target “slave” possono essere definiti come repliche. Le query contrassegnate per l’esecuzione sui server secondari tenteranno di usare uno di essi se disponibile; in caso contrario, verrà utilizzato il server principale.

Sintassi dell’array $databases

L’array $databases è un array annidato di tre livelli. Il primo livello definisce la chiave di connessione, il secondo definisce il target e il terzo contiene le informazioni di connessione per quella coppia chiave/target. Vediamo un esempio pratico:

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

Questo esempio definisce una singola connessione al database con chiave “default” e target “default”. La connessione utilizza il driver MySQL su localhost per il database drupaldb, con l’utente username e la password secret. Questa è la configurazione tipica della maggior parte dei siti Drupal.

Per configurare un’architettura master/slave, si può utilizzare una definizione come questa:

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

Questa configurazione definisce un server “default” principale e due server “slave”. Si noti che la chiave slave è un array: se un target è definito come array di connessioni, Drupal sceglierà casualmente uno dei server per ogni richiesta di pagina. Ciò significa che, su una stessa pagina, alcune query potrebbero essere inviate a dbserver2 e altre a dbserver3.

<?php
$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 principale per Drupal e un secondo database chiamato “extra” che utilizza SQLite. Si noti che la struttura delle informazioni di connessione per SQLite è diversa rispetto a MySQL. Ogni driver di database può avere proprie chiavi di configurazione specifiche. È importante ricordare che, anche se più connessioni vengono definite, Drupal non aprirà connessioni aggiuntive fino a quando non verranno effettivamente utilizzate.

Drupal 7 richiede PDO

Drupal 7 richiede la libreria PDO (PHP Data Objects). Pertanto, per installare Drupal, è necessario assicurarsi che il proprio server o servizio di hosting supporti PDO o installare manualmente la libreria appropriata sul server.