Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment Zend DB gère les connexions aux bases de données

Créer une connexion

La création d'une instance d'une classe d'adaptateur ne se connecte pas immédiatement au serveur RDBMS . L'adaptateur enregistre les paramètres de connexion et établit la connexion réelle à la demande, la première fois vous devez exécuter une requête. Cela garantit que la création d'un objet Adapter est rapide et peu coûteuse. Vous pouvez créer une instance d'un adaptateur même si vous n'êtes pas certain d'avoir besoin d'exécuter des requêtes de base de données pendant la demande actuelle que votre application sert.

Si vous devez forcer l'adaptateur à se connecter au SGBDR, utilisez la méthode getConnection(). Cette méthode renvoie un objet pour la connexion tel que représenté par l'extension de base de données PHP respective. Par exemple, si vous utilisez l'une des classes d'adaptateur pour les pilotes PDO, getConnection() renvoie l'objet PDO, après l'avoir initié en tant que connexion en direct à la base de données spécifique.

Il peut être utile de forcer la connexion si vous souhaitez intercepter les exceptions qu'elle génère en raison d'informations d'identification de compte non valides ou d'un autre échec de connexion au serveur RDBMS. Ces exceptions ne sont pas levées tant que la connexion n'est pas établie. Cela peut donc aider à simplifier le code de votre application si vous gérez les exceptions à un seul endroit, plutôt qu'au moment de la première requête sur la base de données.

De plus, un adaptateur peut être sérialisé pour le stocker, par exemple, dans une variable de session. Cela peut être très utile non seulement pour l'adaptateur lui-même, mais aussi pour d'autres objets qui l'agrègent, comme un objet Zend_Db_Select. Par défaut, les adaptateurs sont autorisés à être sérialisés, si vous ne le souhaitez pas, vous devriez envisager de passer l'option Zend_Db::ALLOW_SERIALIZATION avec FALSE, voir l'exemple ci-dessus. Pour respecter le principe des connexions paresseuses, l'adaptateur ne se reconnectera pas après avoir été désérialisé. Vous devez ensuite appeler getConnection() vous-même. Vous pouvez faire en sorte que l'adaptateur se reconnecte automatiquement en passant Zend_Db ::AUTO_RECONNECT_ON_UNSERIALIZE avec TRUE comme option d'adaptateur.

Fermer une connexion

Normalement, il n'est pas nécessaire de fermer une connexion à la base de données. PHP nettoie automatiquement toutes les ressources et la fin d'une requête. Les extensions de base de données sont conçues pour fermer la connexion lorsque la référence à l'objet ressource est nettoyée.

Cependant, si vous avez un script PHP de longue durée qui initie de nombreuses connexions à la base de données, vous devrez peut-être fermer la connexion pour éviter d'épuiser la capacité de votre serveur RDBMS. Vous pouvez utiliser la méthode closeConnection() de l'adaptateur pour fermer explicitement la connexion à la base de données sous-jacente.

Depuis la version 1.7.2, vous pouvez vérifier que vous êtes actuellement connecté au serveur RDBMS avec la méthode isConnected(). Cela signifie qu'une ressource de connexion a été initiée et n'a pas été fermée. Cette fonction n'est actuellement pas capable de tester par exemple une fermeture côté serveur de la connexion. Ceci est utilisé en interne pour fermer la connexion. Il vous permet de fermer la connexion plusieurs fois sans erreur. C'était déjà le cas avant la 1.7.2 pour les adaptateurs PDO mais pas pour les autres.

Plus d'informations