Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Configuration: Руководство разработчика», проанализируем лучшие практики и покажем, как правильно использовать запросов в реальных задачах.
—
title: Конфигурация
—
Конфигурация подключения к базе данных в Bitrix Framework хранится в файле /bitrix/.settings.php в секции connections:
'connections' => [
'value' => [
// Основное соединение с базой данных
'default' => [
'className' => \Bitrix\Main\DB\MysqliConnection::class, // Используем драйвер MySQLi для соединения
'host' => 'localhost', // Хост базы данных
'database' => 'busik', // Имя базы данных
'login' => 'db_user', // Имя пользователя БД
'password' => '***', // Пароль пользователя
'options' => 2, // Дополнительные опции соединения (2 - отложенное соединение)
],
],
'readonly' => true, // Запрещает изменение настроек во время выполнения скрипта
],Установите параметр readonly => true для секции connections, чтобы предотвратить изменение настроек подключения во время работы.
Как настроить подключение к БД
Параметр className определяет класс для работы с базой данных.
Основные СУБД:
- MySQL —
\Bitrix\Main\DB\MysqliConnection, требует расширениеmysqli,
- PostgreSQL —
\Bitrix\Main\DB\PgsqlConnection, требует расширениеpgsql.
Дополнительные СУБД:
- MS SQL —
\Bitrix\Main\DB\MssqlConnection, требует расширениеsqlsrv,
- Oracle —
\Bitrix\Main\DB\OracleConnection, требует расширениеoci8.
Key-value хранилища:
- HandlerSocket —
\Bitrix\Main\Data\HsphpReadConnection, требует библиотекуHSPHP,
- Memcache —
\Bitrix\Main\Data\MemcacheConnection, требует расширениеmemcache,
- Memcached —
\Bitrix\Main\Data\MemcachedConnection, требует расширениеmemcached,
- Redis —
\Bitrix\Main\Data\RedisConnection, требует расширениеredis.
Как управлять режимом подключения
Параметр options управляет режимом подключения к базе данных. Принимает числовые флаги:
-
1(Connection::PERSISTENT) — постоянное соединение, не закрывается после выполнения запроса,
-
2(Connection::DEFERRED) — отложенное соединение, устанавливается только при первом запросе.
Флаги можно объединять через битовые операции:
-
3=1 | 2—PERSISTENT+DEFERRED,
-
0— обычное соединение, без специальных режимов.
Как подключить HandlerSocket
HandlerSocket — это плагин для MySQL, который работает без SQL-запросов. Он снижает нагрузку на сервер и ускоряет обработку данных.
Добавьте указание на HandlerSocket в основное соединение:
'default' => [
'className' => \Bitrix\Main\DB\MysqliConnection::class,
'handlersocket' => [
'read' => 'handlersocket', // Использовать HandlerSocket для чтения
],
],Добавьте отдельное соединение для HandlerSocket с указанием хоста и порта:
'handlersocket' => [
'className' => \Bitrix\Main\Data\HsphpReadConnection::class,
'host' => 'localhost', // Хост сервера HandlerSocket
'port' => 9998, // Порт для чтения (обычно 9998)
'port_write' => 9999, // Порт для записи (обычно 9999)
],О том, как HandlerSocket ускоряет работу с БД, читайте в статье HandlerSocket.
Как добавить дополнительные соединения
Чтобы добавить соединение с БД, дополните секцию connections в файле конфигурации /bitrix/.settings.php:
'connections' => [
'value' => [
// Основное соединение с базой данных
'default' => [
'className' => \Bitrix\Main\DB\MysqliConnection::class, // Используем драйвер MySQLi для соединения
'host' => 'localhost', // Хост базы данных
'database' => 'busik', // Имя базы данных
'login' => 'db_user', // Имя пользователя БД
'password' => '***', // Пароль пользователя
'options' => 2, // Дополнительные опции соединения (2 — постоянное соединение)
],
// Дополнительное соединение с Redis для кеширования
'redis' => [
'className' => \Bitrix\Main\Data\RedisConnection::class, // Используем драйвер Redis
'host' => 'rediska', // Хост Redis сервера
'port' => '12345', // Порт для подключения к Redis
],
],
'readonly' => true, // Запрещает изменение настроек во время выполнения скрипта
],Получить подключения в коде:
// Подключение по умолчанию (default)
$db = \Bitrix\Main\Application::getConnection();
// Явное указание подключения
$db = \Bitrix\Main\Application::getConnection('default');
$redis = \Bitrix\Main\Application::getConnection('redis');💡 Экспертное мнение и рекомендации
Советы эксперта по интеграции:
- Всегда используйте кэширование при частых запросах к запросов, чтобы разгрузить базу данных.
- Соблюдайте стандарты PSR при написании обработчиков для «Configuration: Руководство разработчика».
- Регулярно проводите аудит производительности системы с помощью встроенного монитора 1С-Битрикс.
Похожая задача в бизнесе?
Помогу автоматизировать процессы и внедрить ИИ
Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.
или на почту: gorandvas@yandex.ru