Connection
PHP Manual

File d'attente de connexion (version 1.2.0-1.2.12 *seulement*)

Note:

Cette section n'est plus pertinente depuis la version 1.3.0 du driver, et n'est plus présente que dans un but d'historisation de l'information sur la façon dont la mise en file d'attente fonctionne.

The latest versions of the driver have no concept of pooling anymore and will maintain only one connection per process, for each connection type (ReplicaSet/standalone/mongos), for each credentials combination.

La création de connexions est une des actions les plus lourdes réalisées par le driver. Cela peut prendre plusieurs millisecondes pour définir correctement une connexion, y compris sur un réseau rapide. Aussi, le driver tente de minimiser le nombre de nouvelles connexions créées en réutilisant les connexions depuis la file d'attente.

Lorsqu'un utilisateur crée une nouvelle instance de la clase MongoClient, toutes les connexions nécessaires seront prises depuis leurs files d'attente (les connexions pour le jeu de réplication peuvent nécessiter plusieurs connexions, une pour chaque membre du jeu). Lorsque l'instance de la classe MongoClient sort du scope, les connexions seront remises dans la file d'attente. Lorsque le processus PHP existe, toutes les connexions de la file d'attente seront fermées.

"Pourquoi dois-je avoir autant de connexions ouvertes ?"

La file d'attente de connexions peut générer un nombre important de connexions. Ceci est voulu, et, en utilisant un peu d'arithmétique, vous pouvez trouver le nombre de connexions qui sera créée. Il y a 3 facteurs qui affectent le nombre de connexions :

Les trois variables ci-dessus peuvent être multipliés ensemble pour fournir le nombre maximal de connexions attendues : connections_per_pool * pools_per_process * processes. Notez que connections_per_pool peut être différent suivant les files d'attente, aussi, connections_per_pool devrait être le maximal.

Par exemple, supposez que vous avez 30 connexions par files d'attentes, 10 files d'attente par processus PHP, et 128 processus PHP. Alors, vous pouvez vous attendre à 38400 connexions depuis cette machine. Aussi, vous devriez définir la limite des descripteurs de fichiers de cette machine à une valeur suffisante pour gérer toutes ces connexions, ou alors les descripteurs de fichiers ne seront pas suffisants.

Voir la méthode MongoPool pour plus d'informations sur les files d'attente de connexions.


Connection
PHP Manual