sql >> Base de Datos >  >> RDS >> Mysql

Cómo Zend DB administra las conexiones de la base de datos

Creando conexión

La creación de una instancia de una clase de Adaptador no se conecta inmediatamente al servidor RDBMS . El adaptador guarda los parámetros de conexión y realiza la conexión real bajo demanda, la primera vez necesita ejecutar una consulta. Esto garantiza que la creación de un objeto Adaptador sea rápida y económica. Puede crear una instancia de un adaptador incluso si no está seguro de que necesita ejecutar consultas de base de datos durante la solicitud actual que su aplicación está atendiendo.

Si necesita obligar al adaptador a conectarse al RDBMS, utilice el método getConnection(). Este método devuelve un objeto para la conexión representado por la respectiva extensión de la base de datos de PHP. Por ejemplo, si usa cualquiera de las clases de adaptador para controladores PDO, entonces getConnection() devuelve el objeto PDO, después de iniciarlo como una conexión en vivo a la base de datos específica.

Puede ser útil forzar la conexión si desea detectar cualquier excepción que genere como resultado de credenciales de cuenta no válidas u otra falla al conectarse al servidor RDBMS. Estas excepciones no se lanzan hasta que se realiza la conexión, por lo que puede ayudar a simplificar el código de su aplicación si maneja las excepciones en un solo lugar, en lugar de en el momento de la primera consulta en la base de datos.

Además, un adaptador puede serializarse para almacenarlo, por ejemplo, en una variable de sesión. Esto puede ser muy útil no solo para el adaptador en sí, sino también para otros objetos que lo agregan, como un objeto Zend_Db_Select. De forma predeterminada, los adaptadores pueden serializarse, si no lo desea, debe considerar pasar la opción Zend_Db::ALLOW_SERIALIZATION con FALSE, consulte el ejemplo anterior. Para respetar el principio de conexiones perezosas, el adaptador no se volverá a conectar después de ser deserializado. Luego debe llamar a getConnection() usted mismo. Puede hacer que el adaptador se vuelva a conectar automáticamente pasando Zend_Db::AUTO_RECONNECT_ON_UNSERIALIZE con TRUE como una opción de adaptador.

Cerrar una conexión

Normalmente no es necesario cerrar una conexión de base de datos. PHP limpia automáticamente todos los recursos y el final de una solicitud. Las extensiones de base de datos están diseñadas para cerrar la conexión a medida que se limpia la referencia al objeto de recurso.

Sin embargo, si tiene un script PHP de larga duración que inicia muchas conexiones a la base de datos, es posible que deba cerrar la conexión para evitar agotar la capacidad de su servidor RDBMS. Puede usar el método closeConnection() del adaptador para cerrar explícitamente la conexión de la base de datos subyacente.

Desde la versión 1.7.2, puede comprobar que actualmente está conectado al servidor RDBMS con el método isConnected(). Esto significa que se inició un recurso de conexión y no se cerró. Esta función actualmente no puede probar, por ejemplo, un cierre del lado del servidor de la conexión. Esto se usa internamente para cerrar la conexión. Le permite cerrar la conexión varias veces sin errores. Ya era el caso antes de 1.7.2 para adaptadores PDO pero no para los demás.

Más información