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

Come Zend DB gestisce le connessioni al database

Creazione di connessione

La creazione di un'istanza di una classe Adapter non si connette immediatamente al server RDBMS . L'adattatore salva i parametri di connessione ed effettua la connessione effettiva su richiesta, la prima volta devi eseguire una query. Ciò garantisce che la creazione di un oggetto Adapter sia rapida ed economica. Puoi creare un'istanza di un adattatore anche se non sei sicuro di dover eseguire query sul database durante la richiesta corrente che la tua applicazione sta servendo.

Se è necessario forzare la connessione dell'adattatore all'RDBMS, utilizzare il metodo getConnection(). Questo metodo restituisce un oggetto per la connessione rappresentato dalla rispettiva estensione del database PHP. Ad esempio, se utilizzi una delle classi Adapter per i driver PDO, getConnection() restituisce l'oggetto PDO, dopo averlo avviato come connessione attiva al database specifico.

Può essere utile forzare la connessione se si desidera rilevare eventuali eccezioni generate a causa di credenziali dell'account non valide o altri errori di connessione al server RDBMS. Queste eccezioni non vengono generate fino a quando non viene stabilita la connessione, quindi può aiutare a semplificare il codice dell'applicazione se gestisci le eccezioni in un unico posto, invece che al momento della prima query sul database.

Inoltre, un adattatore può essere serializzato per archiviarlo, ad esempio, in una variabile di sessione. Questo può essere molto utile non solo per l'adattatore stesso, ma per altri oggetti che lo aggregano, come un oggetto Zend_Db_Select. Per impostazione predefinita, gli adattatori possono essere serializzati, se non lo desideri, dovresti considerare di passare l'opzione Zend_Db::ALLOW_SERIALIZATION con FALSE, vedi l'esempio sopra. Per rispettare il principio delle connessioni pigre, l'adattatore non si ricollegherà dopo essere stato deserializzato. Devi quindi chiamare tu stesso getConnection(). Puoi fare in modo che l'adattatore si ricolleghi automaticamente passando Zend_Db::AUTO_RECONNECT_ON_UNSERIALIZE con TRUE come opzione dell'adattatore.

Chiusura di una connessione

Normalmente non è necessario chiudere una connessione al database. PHP ripulisce automaticamente tutte le risorse e la fine di una richiesta. Le estensioni del database sono progettate per chiudere la connessione quando il riferimento all'oggetto risorsa viene ripulito.

Tuttavia, se si dispone di uno script PHP di lunga durata che avvia molte connessioni al database, potrebbe essere necessario chiudere la connessione per evitare di esaurire la capacità del server RDBMS. È possibile utilizzare il metodo closeConnection() dell'adattatore per chiudere in modo esplicito la connessione al database sottostante.

Dalla versione 1.7.2, puoi verificare di essere attualmente connesso al server RDBMS con il metodo isConnected(). Ciò significa che una risorsa di connessione è stata avviata e non è stata chiusa. Questa funzione non è attualmente in grado di testare ad esempio una chiusura lato server della connessione. Questo viene utilizzato internamente per chiudere la connessione. Ti permette di chiudere la connessione più volte senza errori. Era già il caso prima della 1.7.2 per gli adattatori PDO ma non per gli altri.

Ulteriori informazioni