sql >> Database teknologi >  >> RDS >> Mysql

Hvordan Zend DB administrerer databaseforbindelser

Oprettelse af forbindelse

Oprettelse af en forekomst af en Adapter-klasse opretter ikke umiddelbart forbindelse til RDBMS-serveren . Adapteren gemmer forbindelsesparametrene og foretager den faktiske forbindelse efter behov, første gang du skal udføre en forespørgsel. Dette sikrer, at det er hurtigt og billigt at oprette et Adapter-objekt. Du kan oprette en forekomst af en adapter, selvom du ikke er sikker på, at du skal køre nogen databaseforespørgsler under den aktuelle anmodning, som din applikation betjener.

Hvis du skal tvinge adapteren til at oprette forbindelse til RDBMS, skal du bruge getConnection() metoden. Denne metode returnerer et objekt for forbindelsen som repræsenteret af den respektive PHP-databaseudvidelse. Hvis du f.eks. bruger en af ​​Adapter-klasserne til PDO-drivere, returnerer getConnection() PDO-objektet efter at have startet det som en live-forbindelse til den specifikke database.

Det kan være nyttigt at gennemtvinge forbindelsen, hvis du vil fange eventuelle undtagelser, som den giver som følge af ugyldige kontooplysninger eller anden manglende forbindelse til RDBMS-serveren. Disse undtagelser bliver ikke kastet, før forbindelsen er oprettet, så det kan hjælpe med at forenkle din applikationskode, hvis du håndterer undtagelserne ét sted, i stedet for på tidspunktet for den første forespørgsel mod databasen.

Derudover kan en adapter serialiseres for at gemme den, for eksempel i en sessionsvariabel. Dette kan være meget nyttigt ikke kun for selve adapteren, men for andre objekter, der samler det, som et Zend_Db_Select-objekt. Som standard har adaptere lov til at blive serialiseret, hvis du ikke ønsker det, bør du overveje at overføre Zend_Db::ALLOW_SERIALIZATION muligheden med FALSE, se eksemplet ovenfor. For at respektere princippet om dovne forbindelser vil adapteren ikke tilslutte sig selv igen, efter at den er blevet unserialiseret. Du skal derefter selv kalde getConnection(). Du kan få adapteren til at genoprette automatisk forbindelse ved at sende Zend_Db::AUTO_RECONNECT_ON_UNSERIALIZE med TRUE som en adapterindstilling.

Afslutning af en forbindelse

Normalt er det ikke nødvendigt at lukke en databaseforbindelse. PHP rydder automatisk op i alle ressourcer og slutningen af ​​en anmodning. Databaseudvidelser er designet til at lukke forbindelsen, efterhånden som referencen til ressourceobjektet ryddes op.

Men hvis du har et langvarigt PHP-script, der starter mange databaseforbindelser, skal du muligvis lukke forbindelsen for at undgå at opbruge kapaciteten på din RDBMS-server. Du kan bruge adapterens closeConnection()-metode til eksplicit at lukke den underliggende databaseforbindelse.

Siden release 1.7.2 kan du kontrollere, at du i øjeblikket er forbundet til RDBMS-serveren med metoden isConnected(). Det betyder, at en forbindelsesressource er blevet startet og ikke blev lukket. Denne funktion er i øjeblikket ikke i stand til at teste for eksempel en serverside lukning af forbindelsen. Dette bruges internt til at lukke forbindelsen. Det giver dig mulighed for at lukke forbindelsen flere gange uden fejl. Det var allerede tilfældet før 1.7.2 for PDO-adaptere, men ikke for de andre.

Flere oplysninger




  1. Antal rækker påvirket af en OPDATERING i PL/SQL

  2. MySQL #1364 - Feltet 'column_name' har ikke en standardværdi - Kan ikke indsættes i DB

  3. Brug LIMIT til at paginere resultater i MySQL-forespørgsel

  4. Forskellen mellem 'AND' og '&&' i SQL