Дата последнего изменения: 11.01.2024
Дополнительным фактором, влияющим на производительность системы, является правильное использование баз данных. Все современные проекты для отображения динамической информации (новостей, каталога товаров и др.) используют СУБД (системы управления базами данных), а СУБД, в свою очередь, требует правильной настройки своих параметров.
База данных представляет собой независимое клиент-серверное приложение, которое запускается и работает в операционной системе. Внешние приложения соединяются с базой данных через TCP/IP или внутренние потоки, направляют SQL-запросы и получают в ответ от базы данных необходимые данные.
Возможно два типа соединения с базой данных для веб-приложения:
Обычное соединение устанавливается каждый раз во время выполнения страницы при первом обращении к базе данных. Установленное соединение освобождается (в большинстве случаев и закрывается) после завершения страницы.
Постоянное соединение (функции PHP обычно называются *_pconnect) устанавливается один раз при первом обращении к базе данных и при повторных обращениях, даже из других страниц, используются уже открытые соединения к базе данных.
Учитывая, что открытие соединения к базе данных - процесс относительно дорогой по ресурсам и времени (происходит установление TCP/IP соединения, выделяются буферы памяти, проводится проверка и авторизация, настраиваются перекодировщики и выполняется целый ряд других функций), использование постоянных соединений является предпочтительным, если это не приводит к превышению числа одновременных соединений с базой данных. Целесообразность применения постоянных соединений прямо пропорциональна частоте обращений к базе данных, то есть посещаемости сайта.
Например, если на сайте за 15 минут в среднем бывает по 100 посетителей, применение define("DBPersistent", true);
целесообразно, если по 5, то, конечно же, нет.
localhost
или localhost:port
, PHP в большинстве своем будет пытаться соединиться с локальным сокетом без использования TCP/IP. Если вы все же хотите использовать TCP/IP, используйте адрес 127.0.0.1 вместо localhost.
Соединение без использования TCP/IP дает наивысшие результаты по производительности, особенно при передаче больших объемов информации из базы данных. Но если база данных расположена на другой машине и избежать соединения по TCP/IP не удается, использование постоянного соединения становится еще более выгодным.
В большинстве случаев база данных работает на той же машине, что и PHP-приложение и веб-сервер. Но вполне возможна ситуация, когда база данных установлена на соседней машине или даже у другого провайдера. "1С-Битрикс: Управление сайтом" устанавливает соединение с сервером базы данных через стандартные библиотеки, которые идут в поставке языка программирования PHP.
В "1С-Битрикс: Управление сайтом" с версии 20.900.0 тип соединения с базой данных устанавливается в файле/bitrix/.settings.php
В файле: /bitrix/php_interface/dbconn.php
до этой же версии
в ядре D7.
Пример содержимого файла:
'connections' => array ( 'value' => array ( 'default' => array ( 'className' => '\\Bitrix\\Main\\DB\\MysqlConnection', 'host' => 'localhost:31006', 'database' => 'admin_bus', 'login' => 'admin_bus', 'password' => 'admin_bus', 'options' => 2, 'handlersocket' => array ( 'read' => 'handlersocket', ), ),
Используйте константу DBPersistent
, чтобы установить тип соединения с базой данных.
define("DBPersistent", false);
Использование постоянных соединений может потребовать некоторой настройки Apache и MySQL. Убедитесь, что вы не превысите максимальное число дозволенных соединений. Читайте дополнительную информацию в документации PHP относительно используемой вами базы данных.