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

Работа с БД в Drupal 7 - урок 2 - Кофигурация БД

02/12/2019, by Ivan

Основным средством определения соединения с БД является массив $databases в settings.php. Как подсказывает само название, $databases позволяет определить множество соединений с БД. Он также поддерживает определение множества целей. Соединение не открывается (объект соединения не создается) пока первый раз некоторый кусочек кода не выполнит запрос к БД.

Ключ соединения

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

Цель соединения

Данное соединение должно иметь одну или больше целей. Цель это опциональная обработка БД, чтобы использовать БД в случае ее доступности. Если запрашиваемая цель не определена, то система будет "в бесшумном" режиме обращаться к цели по умолчанию, которая должна быть всегда определена.

В первую очередь цели используются для мастер/slave replication. По умолчанию цель это главный SQL сервер. Одна или больше "slave" целей могут быть также определены. Запросы которые помечены будут пытаться использовать дополнительный SQL сервер, если это возможно. Если это получится, то будет работать slave сервер, если нет, то будет использован сервер по умолчанию, то есть основной.

$databases синтаксис

Массив $databases это вложенный массив из 3 уровней. Первый уровень определяет ключ соединения. Второй определяет цель соединения. Значение для каждой цели это информация соединения для пары ключ/цель. А теперь пример для пояснения.

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

Массив $databases определяет одиночное соединение с ключом ("default") и целью ("default"). Это соединение использует MySQL БД ("driver" - mysql) на сервере localhost, для базы данных drupaldb, с пользователем username и паролем secret. Обычно это конфигурация большинства сайтов.

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

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

Данная конфигурация предоставляет один "default" сервер и 2 "slave" сервера. Заметьте что slave ключ это массив. Если любая цель определена как массив информации о соединение, то один определенный сервер будет выбран случайным образом для каждого запроса страницы. Это значит, на одной странице все запросы могут быть отосланы как к dbserver2, так и к 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',
);
?>

Конфигурация определяет одну главную Drupal базу данных и одну дополнительную базу данных отмеченную как "extra", которая использует SQLite. Заметьте что для SQLite информация соединения отличается по структуре от MySQL. Каждый драйвер может иметь различную конфигурацию определяющую как его использовать. Помните что не имеет значение как много соединений определено, Drupal  не будет открывать соединение для других БД, пока используется БД по умолчанию.

Drupal 7 требует PDO

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