Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So verwaltet Zend DB Datenbankverbindungen

Verbindung herstellen

Beim Erstellen einer Instanz einer Adapterklasse wird nicht sofort eine Verbindung zum RDBMS-Server hergestellt . Der Adapter speichert die Verbindungsparameter und stellt die eigentliche Verbindung bei Bedarf erstmals her Sie müssen eine Abfrage ausführen. Dadurch wird sichergestellt, dass das Erstellen eines Adapterobjekts schnell und kostengünstig ist. Sie können eine Instanz eines Adapters erstellen, auch wenn Sie nicht sicher sind, dass Sie während der aktuellen Anfrage, die Ihre Anwendung bedient, Datenbankabfragen ausführen müssen.

Wenn Sie den Adapter zwingen müssen, sich mit dem RDBMS zu verbinden, verwenden Sie die Methode getConnection(). Diese Methode gibt ein Objekt für die Verbindung zurück, wie es durch die jeweilige PHP-Datenbankerweiterung repräsentiert wird. Wenn Sie beispielsweise eine der Adapter-Klassen für PDO-Treiber verwenden, gibt getConnection() das PDO-Objekt zurück, nachdem es als Live-Verbindung zu der spezifischen Datenbank initiiert wurde.

Es kann nützlich sein, die Verbindung zu erzwingen, wenn Sie Ausnahmen abfangen möchten, die aufgrund ungültiger Kontoanmeldeinformationen oder anderer Verbindungsfehler mit dem RDBMS-Server ausgelöst werden. Diese Ausnahmen werden nicht ausgelöst, bis die Verbindung hergestellt ist, sodass es hilfreich sein kann, Ihren Anwendungscode zu vereinfachen, wenn Sie die Ausnahmen an einem Ort behandeln, anstatt zum Zeitpunkt der ersten Abfrage der Datenbank.

Außerdem kann ein Adapter serialisiert werden, um ihn beispielsweise in einer Sitzungsvariablen zu speichern. Dies kann nicht nur für den Adapter selbst sehr nützlich sein, sondern auch für andere Objekte, die ihn aggregieren, wie ein Zend_Db_Select-Objekt. Standardmäßig dürfen Adapter serialisiert werden, wenn Sie dies nicht möchten, sollten Sie erwägen, die Option Zend_Db::ALLOW_SERIALIZATION mit FALSE zu übergeben, siehe obiges Beispiel. Um das Lazy Connections-Prinzip zu respektieren, verbindet sich der Adapter nach der Deserialisierung nicht erneut. Anschließend müssen Sie getConnection() selbst aufrufen. Sie können den Adapter automatisch neu verbinden, indem Sie Zend_Db::AUTO_RECONNECT_ON_UNSERIALIZE mit TRUE als Adapteroption übergeben.

Schließen einer Verbindung

Normalerweise ist es nicht notwendig, eine Datenbankverbindung zu schließen. PHP bereinigt automatisch alle Ressourcen und das Ende einer Anfrage. Datenbankerweiterungen sind so konzipiert, dass sie die Verbindung schließen, wenn der Verweis auf das Ressourcenobjekt bereinigt wird.

Wenn Sie jedoch ein PHP-Skript mit langer Dauer haben, das viele Datenbankverbindungen initiiert, müssen Sie die Verbindung möglicherweise schließen, um die Kapazität Ihres RDBMS-Servers nicht zu erschöpfen. Sie können die Methode closeConnection() des Adapters verwenden, um die zugrunde liegende Datenbankverbindung explizit zu schließen.

Seit Release 1.7.2 können Sie mit der Methode isConnected() prüfen, ob Sie aktuell mit dem RDBMS-Server verbunden sind. Dies bedeutet, dass eine Verbindungsressource initiiert und nicht geschlossen wurde. Diese Funktion ist derzeit nicht in der Lage, beispielsweise ein serverseitiges Schließen der Verbindung zu testen. Dies wird intern verwendet, um die Verbindung zu schließen. Damit können Sie die Verbindung mehrmals ohne Fehler schließen. Das war schon vor 1.7.2 für PDO-Adapter der Fall, aber nicht für die anderen.

Weitere Informationen