sql >> Database >  >> RDS >> Mysql

Hoe Zend DB databaseverbindingen beheert

Verbinding maken

Het maken van een instantie van een Adapter-klasse maakt niet onmiddellijk verbinding met de RDBMS-server . De adapter slaat de verbindingsparameters op en maakt de daadwerkelijke verbinding op aanvraag, de eerste keer je moet een query uitvoeren. Dit zorgt ervoor dat het maken van een Adapter-object snel en goedkoop is. U kunt een instantie van een adapter maken, zelfs als u niet zeker weet of u databasequery's moet uitvoeren tijdens het huidige verzoek dat uw toepassing uitvoert.

Als u de adapter moet forceren om verbinding te maken met het RDBMS, gebruikt u de methode getConnection(). Deze methode retourneert een object voor de verbinding zoals weergegeven door de respectieve PHP-database-extensie. Als u bijvoorbeeld een van de Adapter-klassen voor PDO-stuurprogramma's gebruikt, retourneert getConnection() het PDO-object, nadat het als een live verbinding met de specifieke database is gestart.

Het kan handig zijn om de verbinding te forceren als u uitzonderingen wilt opvangen die worden gegenereerd als gevolg van ongeldige accountreferenties of een andere fout om verbinding te maken met de RDBMS-server. Deze uitzonderingen worden pas gegenereerd nadat de verbinding tot stand is gebracht, dus het kan helpen om uw toepassingscode te vereenvoudigen als u de uitzonderingen op één plek afhandelt, in plaats van op het moment van de eerste query op de database.

Bovendien kan een adapter geserialiseerd worden om deze bijvoorbeeld op te slaan in een sessievariabele. Dit kan erg handig zijn, niet alleen voor de adapter zelf, maar ook voor andere objecten die deze samenvoegen, zoals een Zend_Db_Select object. Standaard mogen adapters worden geserialiseerd, als je dat niet wilt, kun je overwegen om de Zend_Db::ALLOW_SERIALIZATION optie door te geven aan FALSE, zie het voorbeeld hierboven. Om het principe van de luie verbinding te respecteren, zal de adapter zichzelf niet opnieuw verbinden nadat de serienummer is opgeheven. U moet dan zelf getConnection() aanroepen. Je kunt de adapter automatisch opnieuw verbinden door Zend_Db::AUTO_RECONNECT_ON_UNSERIALIZE door te geven met TRUE als adapteroptie.

Een verbinding verbreken

Normaal gesproken is het niet nodig om een ​​databaseverbinding te sluiten. PHP ruimt automatisch alle bronnen en het einde van een verzoek op. Database-extensies zijn ontworpen om de verbinding te sluiten als de verwijzing naar het bronobject wordt opgeschoond.

Als u echter een langdurig PHP-script heeft dat veel databaseverbindingen initieert, moet u mogelijk de verbinding sluiten om te voorkomen dat de capaciteit van uw RDBMS-server wordt uitgeput. U kunt de methode closeConnection() van de Adapter gebruiken om de onderliggende databaseverbinding expliciet te sluiten.

Sinds release 1.7.2 kunt u controleren of u momenteel bent verbonden met de RDBMS-server met de methode isConnected(). Dit betekent dat een verbindingsbron is gestart en niet is gesloten. Deze functie is momenteel niet in staat om bijvoorbeeld het sluiten van de verbinding aan de serverzijde te testen. Dit wordt intern gebruikt om de verbinding te sluiten. Hiermee kunt u de verbinding meerdere keren zonder fouten sluiten. Dit was al het geval vóór 1.7.2 voor PDO-adapters, maar niet voor de andere.

Meer informatie




  1. .po/.mo-bestanden uitvoeren of laden voor lokalisatie in php

  2. InnoDB schijfgebruik overhead

  3. Mysql maakt tabel met meerdere refererende sleutels op delete set null

  4. Installatie van MySQL in Docker mislukt met foutmelding Kan geen verbinding maken met lokale MySQL-server via socket