Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll
01/05/2020, by maria

Основным средством определения соединения с базой данных является массив $database в settings.php. Как следует из названия, $database позволяет определять несколько соединений с базами данных. Он также поддерживает определение нескольких целей. Соединение с базой данных не открывается (объект соединения не создается) до тех пор, пока первый фрагмент кода не попытается выполнить запрос к этой базе данных.

Ключ подключения

$databases['default'] // The database connection.

Ключ подключения - это уникальный идентификатор для данного соединения с базой данных. Ключ соединения должен быть уникальным для данного сайта, и всегда должно быть соединение по умолчанию, которое будет основной базой данных Drupal. На большинстве сайтов это будет единственное определенное соединение.

Цель

$databases['default']['default'] // The database target.

У данного ключа подключения должна быть одна или несколько целей. Цель - это база данных, которую можно использовать, если она доступна. Цель «default» всегда должна быть определена для каждого ключа подключения. Если запрошенная цель не определена, система автоматически вернется к значению «по умолчанию».

Основное использование целей - для первичной репликации / репликации. Целью по умолчанию является основной сервер SQL. Затем может быть определена одна или несколько целей «реплики» (обратите внимание, что в некоторых ситуациях «реплика» является единственной допустимой альтернативной целью, например, в статических запросах). Запросы, помеченные, чтобы попытаться использовать сервер реплики, если он доступен, будут пытаться получить доступ к цели «реплика». Если оно доступно, это соединение будет открыто (если оно еще не установлено), и запрос будет запущен на сервере реплики. Если нет, запрос будет выполняться вместо «основного» (основного) сервера. Это обеспечивает прозрачный запасной вариант, поэтому код может быть написан так, чтобы использовать преимущества сервера реплики, если он доступен, но все равно будет работать без сервера без изменений.

$databases syntax

Массив $database является вложенным массивом минимум трех уровней. Первый уровень определяет ключи базы данных. Второй определяет цели базы данных. Значение каждой цели - это информация о соединении для этого ключа / цели. Некоторые примеры должны прояснить это.

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

Приведенный выше массив $database определяет один ключ подключения («по умолчанию») с одной целью («по умолчанию»). Это соединение использует базу данных MySQL (ключ «драйвера») на локальном узле с именем «drupaldb» с именем пользователя «username» и паролем «secret». Приведенный выше пример является типичным случаем установки Drupal с одним SQL-сервером и будет достаточным для подавляющего большинства сайтов.

Для конфигурации первичной / реплики можно определить следующее:

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

Это определение предоставляет один сервер «по умолчанию» и два сервера «реплики». Обратите внимание, что ключ «replica» является массивом. Если какая-либо цель определена как массив информации о соединении, один из определенных серверов будет выбран случайным образом для этой цели для каждого запроса страницы. Таким образом, при запросе одной страницы все запросы на реплики будут отправлены на dbserver2, а на следующей все они могут быть отправлены на 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',
);

Эта конфигурация определяет одну основную базу данных Drupal и одну дополнительную базу данных с надписью «extra», которая использует SQLite. Обратите внимание, что информация о соединении SQLite структурирована иначе, чем у MySQL. Каждый драйвер может иметь различную конфигурацию в зависимости от того, что подходит для него.

Помните, что независимо от того, сколько соединений вы определяете, Drupal не будет открывать соединение с этой базой данных, пока оно не будет фактически использовано.

Требуемый PDO

Поскольку библиотека PHP PDO теперь требуется для уровня базы данных Drupal, вам потребуется план хостинга, который включает ее для запуска Drupal.

Параметры PDO

Параметры PDO и параметры PDO для конкретного драйвера можно указать в массиве базы данных с помощью ключа 'pdo', например:

$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.