Драйвер PHP Mongodb 1.5: как использовать пул соединений?

#php #mongodb

#php #mongodb

Вопрос:

Я использую PHPLIB 1.4 PHP mongodb-1.5 (PECL). Как настроить пул соединений? Я искал, но все результаты относятся к более старой версии.

Ответ №1:

Драйвер PHP использует однопоточный клиентский режим libmongoc, который не реализует пулы соединений.

Смотрите mongo-php-driver: проблемы # 688:

Пулы соединений не должны требоваться ни для одного однопоточного приложения, если только вы не используете асинхронный PHP-фреймворк (например, Amp, ReactPHP). В таких случаях вам, вероятно, потребуется реализовать свой собственный драйвер, поскольку мы не предоставляем способа интегрировать ввод-вывод libmongoc с циклом событий PHP. Многопоточные PHP-приложения (например, pthreads, разветвление) не поддерживаются драйвером.

Вместо пула соединений драйвер PHP использует сохранение соединений и топологии начиная с версии 1.2.0 .

Когда вызывается MongoDBDriverManager::__construct(), из его аргументов создается хэш (т.е. строка URI и параметры массива). Драйвер попытается найти ранее сохраненный libmongoc клиентский объект для этого хэша. Если существующий клиент не может быть найден по хэшу, будет создан новый клиент (и сохранен для дальнейшего использования).

Смотрите дополнительную информацию об обработке PHP-соединений MongoDB.