logo

Extra Block Types (EBT) - Neue Erfahrung im Layout Builder❗

Extra Block Types (EBT) - gestylte, anpassbare Blocktypen: Diashows, Registerkarten, Karten, Akkordeons und viele andere. Eingebaute Einstellungen für Hintergrund, DOM Box, Javascript Plugins. Erleben Sie die Zukunft der Layouterstellung schon heute.

Demo EBT-Module EBT-Module herunterladen

❗Extra Absatztypen (EPT) - Erfahrung mit neuen Absätzen

Extra Paragraph Types (EPT) - analoger, auf Absätzen basierender Satz von Modulen.

Demo EPT-Module EPT-Module herunterladen

Scroll
19/06/2025, by Ivan

Das Hauptmittel zur Definition einer Datenbankverbindung ist das Array $databases in der Datei settings.php. Wie der Name schon sagt, ermöglicht $databases die Definition mehrerer Datenbankverbindungen. Es unterstützt auch die Definition mehrerer Ziele. Die Datenbankverbindung wird erst geöffnet (Verbindungsobjekt wird erstellt), wenn der erste Codeabschnitt versucht, eine Abfrage an diese Datenbank zu senden.

Verbindungsschlüssel

$databases['default'] // Die Datenbankverbindung.

Der Verbindungsschlüssel ist ein eindeutiger Bezeichner für die jeweilige Datenbankverbindung. Der Verbindungs-Schlüssel muss für die jeweilige Website eindeutig sein, und es muss immer eine Standardverbindung geben, die die Hauptdatenbank von Drupal darstellt. Auf den meisten Websites ist dies die einzige definierte Verbindung.

Ziel

$databases['default']['default'] // Das Datenbankziel.

Jeder Verbindungsschlüssel muss ein oder mehrere Ziele besitzen. Ein Ziel ist eine Datenbank, die verwendet werden kann, wenn sie verfügbar ist. Das Ziel „default“ muss für jeden Verbindungsschlüssel immer definiert sein. Wenn das angeforderte Ziel nicht definiert ist, fällt das System automatisch auf „default“ zurück.

Der Hauptzweck der Ziele liegt in der primären Replikation / Replikaten. Das Standardziel ist der primäre SQL-Server. Zusätzlich können ein oder mehrere Ziele „replica“ definiert werden (beachten Sie, dass in manchen Situationen „replica“ das einzige zulässige alternative Ziel ist, z.B. bei statischen Abfragen). Abfragen, die so markiert sind, dass sie versuchen, einen Replikationsserver zu verwenden, falls vorhanden, werden versuchen, das Ziel „replica“ zu verwenden. Ist dieses verfügbar, wird die Verbindung geöffnet (sofern noch nicht geschehen) und die Abfrage auf dem Replikationsserver ausgeführt. Andernfalls läuft die Abfrage auf dem primären („default“) Server. Dies bietet eine transparente Fallback-Lösung, sodass der Code die Vorteile eines Replikationsservers nutzen kann, falls vorhanden, aber auch ohne ihn unverändert funktioniert.

$databases-Syntax

Das Array $databases ist ein verschachteltes Array mit mindestens drei Ebenen. Die erste Ebene definiert die Datenbankschlüssel. Die zweite Ebene definiert die Datenbankziele. Der Wert jedes Ziels ist die Verbindungsinformation für diesen Schlüssel / dieses Ziel. Einige Beispiele machen dies deutlicher.

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

Das obige $databases-Array definiert einen Verbindungsschlüssel („default“) mit einem Ziel („default“). Diese Verbindung verwendet eine MySQL-Datenbank (Schlüssel „driver“) auf dem Host „localhost“ mit der Datenbank „drupaldb“, Benutzername „username“ und Passwort „secret“. Dieses Beispiel entspricht einer typischen Drupal-Installation mit einem einzigen SQL-Server und ist für die überwiegende Mehrheit der Websites ausreichend.

Für die Konfiguration von Primär-/Replica-Setups kann Folgendes definiert werden:

$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',
);

Diese Definition bietet einen „default“-Server und zwei „replica“-Server. Beachten Sie, dass der Schlüssel „replica“ ein Array ist. Wenn ein Ziel als Array von Verbindungsinformationen definiert ist, wird für jede Seitenanfrage zufällig einer der definierten Server für dieses Ziel ausgewählt. So werden bei einer Seitenanfrage alle Replica-Abfragen an dbserver2 gesendet, bei der nächsten Anfrage vielleicht an dbserver3.

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

Diese Konfiguration definiert eine Hauptdatenbank für Drupal und eine zusätzliche Datenbank mit dem Schlüssel „extra“, die SQLite verwendet. Beachten Sie, dass die Verbindungsinformationen für SQLite anders strukturiert sind als für MySQL. Jeder Treiber kann unterschiedliche Konfigurationen haben, abhängig von seinen Anforderungen.

Unabhängig davon, wie viele Verbindungen Sie definieren, öffnet Drupal eine Verbindung zu einer Datenbank erst, wenn diese tatsächlich verwendet wird.

Erforderliches PDO

Da die PHP-Bibliothek PDO nun für die Datenbankebene von Drupal erforderlich ist, benötigen Sie einen Hosting-Plan, der diese unterstützt, um Drupal auszuführen.

PDO-Optionen

PDO-Optionen und PDO-Treiber-spezifische Optionen können im Datenbankarray mit dem Schlüssel 'pdo' angegeben werden, z.B.:

$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),
);

 

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.