PDO PHP

3 Formas para cerrar la conexión PDO de PHP

3 Formas para cerrar la conexión PDO de PHP. La conexión a base de datos mediante PDO suele ser muy utilizada por su flexibilidad y seguridad que ofrece, además nos permite conectarnos a distintos SGBD con una misma metodología.

Sin embargo, hay un detalle que está en manos de los desarrolladores de PHP y es cerrar la conexión a la base de datos.

3 formas para cerrar conexión PDO PHP

  • Primera forma: Usando Variable
  • Segunda Forma: Usando Objetos
  • Tercera forma: Cerrar usando Clase

¿Cómo cerrar la conexión PDO PHP?

Para cerrar la conexión PDO es necesario poner a valor nulo la variable de conexión y lo que hará será liberar recursos del sistema relacionados. El objeto PDOStatement que trata y manipula nuestras consultas y el objeto PDO.

$pdo = new PDO('mysql:host=localhost;dbname=Test, 'root', 'root');

//Consulta SQL PDO
$stmt = $pdo->prepare('SELECT * FROM user');
$result = $stmt->execute();

Primera forma: Usando Variable

Si nuestra conexión es en PHP nativo podemos usar este método de cierre de conexión. Aquí, la clave para cerrar la conexión con las siguientes líneas de código:

$stmt = null; // obligado para cerrar la conexión
$pdo = null;

Pasos para cerrar la conexión PDO

Estas líneas son importantes para cerrar la conexión PDO y son:

  • la línea que libera el objeto PDOStatement: $stmt = null
  • liberar el objeto de conexión PDO: $pdo = null

Para dinamizar los procesos se suele usar funciones para realizar una determinada acción y es por ello que cerrar la conexión también podemos usar este método.

Es recomendable utilizar una función propia que nos cierre la conexión para PDO y que nos evite posibles errores.

<?php
function disconnect () {
global $pdo, $stmt;
$stmt->closeCursor();
$stmt = null;
$pdo = null;
}
?>

Nota:

La conexión permanece activa durante el tiempo de vida de ese objeto PDO. Para cerrar la conexión, debe destruir el objeto asegurándose de que se eliminen todas las referencias restantes; para ello, asigne NULL a la variable que contiene el objeto. Si no hace esto explícitamente, PHP cerrará automáticamente la conexión cuando finalice su secuencia de comandos.

Si esta es tu conexión, entonces tienes que asignar nulo y la variable de conexión debe contener el valor NULL. Por lo tanto, de esta manera puede cerrar la conexión en PDO.

$conn=new PDO("mysql:host=$host;dbname=$dbname",$user,$pass);
$conn=null;

Segunda Forma: Usando Objetos

Es más que simplemente establecer la conexión en nulo. Eso puede ser lo que dice la documentación, pero esa no es la verdad para MySQL.

Para forzar el cierre de la conexión tienes que hacer algo como:

$this->connection = new PDO();
$this->connection->query('KILL CONNECTION_ID()');
$this->connection = null;

Tercera forma: Cerrar usando Clase

Tenemos que crear una clase derivada para tener una instrucción más autodocumentada en lugar de $conn=null;. Veamos el ejemplo completo.

class CMyPDO extends PDO {
public function __construct($dsn, $username = null, $password = null, array $options = null) {
parent::__construct($dsn, $username, $password, $options);
}

static function getNewConnection() {
$conn=null;
try {
$conn = new CMyPDO("mysql:host=$host;dbname=$dbname",$user,$pass);
}
catch (PDOException $exc) {
echo $exc->getMessage();
}
return $conn;
}

static function closeConnection(&$conn) {
$conn=null;
}
}

Ejecutando la clase para cerrar conexión.

Para llamar a la clase tenemos que ejecutar las siguientes líneas de código:


$conn=CMyPDO::getNewConnection();
// my code
CMyPDO::closeConnection($conn);

Conclusión

En este articulo hemos aprendido a cerrar la conexión PDO usando el lenguaje PHP. Además, vimos 3 formas sencillas que podemos aplicar a nuestros proyectos.
En ocasiones no suele dar problemas, pero es recomendable cerrar la conexión para poder evitar problemas futuros.

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba