пул соединений с БД - PullRequest
       50

пул соединений с БД

0 голосов
/ 04 сентября 2018

Интересно, есть ли у f3 концепция пула соединений с БД. Когда я проверяю пример кода CMS, кажется, что соединение БД создается в конструкции контроллера.

function __construct() {
    $f3=Base::instance();
    // Connect to the database
    $db=new DB\SQL($f3->get('db'));

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

Поддерживает ли f3 (или любой плагин) пул соединений с БД, чтобы мы могли ограничить количество соединений с БД? Запросы помещаются в очередь, когда количество подключений к БД превышает размер пула.

1 Ответ

0 голосов
/ 06 сентября 2018

Не обязательно создавать соединение с БД в контроллере, так как это всего лишь простой пример. Я бы посоветовал против этого и предложил бы использовать хотя бы местоположение службы или - еще лучше - внедрение зависимости.

F3 не имеет управления пулом. Если я не ошибаюсь, в PHP нет управления пулами. Вполне возможно, что есть модуль PECL, который добавляет эту функцию. На запросы обычно (PHP-FPM, FCGI, mod_php) отвечают чистые среды PHP (за исключением некоторых деталей, таких как apcu, obcache или сессий).

Дополнительная информация

  • Должно быть возможно использовать постоянные соединения, установив PDO::ATTR_PERSISTENT, но есть некоторые неприятные недостатки. Подробности доступны в этом вопросе SO: Каковы недостатки использования постоянного подключения в PDO

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

...