sql >> Databasteknik >  >> RDS >> Mysql

Hur Zend DB hanterar databasanslutningar

Skapa anslutning

Att skapa en instans av en Adapter-klass ansluter inte omedelbart till RDBMS-servern . Adaptern sparar anslutningsparametrarna och gör den faktiska anslutningen på begäran, första gången du måste köra en fråga. Detta säkerställer att det går snabbt och billigt att skapa ett Adapter-objekt. Du kan skapa en instans av en adapter även om du inte är säker på att du behöver köra några databasfrågor under den aktuella begäran som din applikation betjänar.

Om du behöver tvinga adaptern att ansluta till RDBMS, använd metoden getConnection(). Denna metod returnerar ett objekt för anslutningen som representeras av respektive PHP-databastillägg. Till exempel, om du använder någon av Adapter-klasserna för PDO-drivrutiner, returnerar getConnection() PDO-objektet efter att ha initierat det som en live-anslutning till den specifika databasen.

Det kan vara användbart att tvinga fram anslutningen om du vill fånga eventuella undantag som den ger till följd av ogiltiga kontouppgifter eller annat misslyckande med att ansluta till RDBMS-servern. Dessa undantag kastas inte förrän anslutningen görs, så det kan hjälpa till att förenkla din applikationskod om du hanterar undantagen på ett ställe, istället för vid tidpunkten för den första frågan mot databasen.

Dessutom kan en adapter serialiseras för att lagra den, till exempel i en sessionsvariabel. Detta kan vara mycket användbart inte bara för själva adaptern, utan för andra objekt som aggregerar den, som ett Zend_Db_Select-objekt. Som standard är adaptrar tillåtna att serialiseras, om du inte vill det bör du överväga att skicka alternativet Zend_Db::ALLOW_SERIALIZATION med FALSE, se exemplet ovan. För att respektera principen om lata anslutningar kommer adaptern inte att återansluta sig själv efter att ha blivit oserialiserad. Du måste då själv anropa getConnection(). Du kan få adaptern att återansluta automatiskt genom att skicka Zend_Db::AUTO_RECONNECT_ON_UNSERIALISE med TRUE som adapteralternativ.

Avsluta en anslutning

Normalt är det inte nödvändigt att stänga en databasanslutning. PHP rensar automatiskt upp alla resurser och slutet på en begäran. Databastillägg är utformade för att stänga anslutningen när referensen till resursobjektet rensas upp.

Men om du har ett PHP-skript med lång varaktighet som initierar många databasanslutningar, kan du behöva stänga anslutningen för att undvika att tömma kapaciteten på din RDBMS-server. Du kan använda adapterns closeConnection()-metod för att explicit stänga den underliggande databasanslutningen.

Sedan version 1.7.2 kan du kontrollera att du för närvarande är ansluten till RDBMS-servern med metoden isConnected(). Det betyder att en anslutningsresurs har initierats och inte stängts. Den här funktionen kan för närvarande inte testa att t.ex. en serversida stängs av anslutningen. Detta används internt för att stänga anslutningen. Det låter dig stänga anslutningen flera gånger utan fel. Det var redan fallet före 1.7.2 för PDO-adaptrar men inte för de andra.

Mer information




  1. Hur hanterar man flera uppslagstabeller för nybörjare av SQL?

  2. Säkerhetskopiera PostgreSQL med pg_dump och pg_dumpall

  3. mysql-fråga för att dynamiskt konvertera raddata till kolumner

  4. SQL Server:VÄLJ endast raderna med MAX(DATE)