persistentes new ejemplo conexiones conexion clase cerrar attr_persistent php sql mysql pdo

php - ejemplo - new pdo



¿Deben cerrarse las conexiones SQL abiertas con PDO en PHP? (6)

Bien viendo como el $link para el PDO se le asigna un objeto, PHP lo establece como nulo tan pronto como se ejecuta el script para que ya no sea un objeto. Por lo tanto, puedes hacer lo siguiente:

$link = new PDO("mysql:dbname=$dbname;host=$servername",$username,$password); //prepare statements, perform queries $link = null;

Cuando abro una conexión MySQL en PHP con solo las funciones MySQL integradas de PHP, hago lo siguiente:

$link = mysql_connect($servername, $username, $password); mysql_select_db($dbname); //queries etcetera mysql_close($link);

Cuando abro una conexión con PDO, se ve así:

$link = new PDO("mysql:dbname=$dbname;host=$servername",$username,$password); //prepare statements, perform queries

¿Debo cerrar explícitamente la conexión como lo hago con mysql_connect() y mysql_close() ? Si no, ¿cómo sabe PHP cuando termino con mi conexión?

TIA.


Cuando el script PHP termina de ejecutarse, todas las conexiones se cierran. Además, no tiene que cerrar explícitamente su conexión con mysql_close() .


PDO no ofrece esa función por sí mismo. Las conexiones a través de PDO se gestionan indirectamente mediante el recuento de objetos de PDO en PHP.

Pero a veces quieres cerrar la conexión de todos modos, independientemente del recuento. Ya sea porque no puede controlarlo, lo necesita con fines de prueba o similar.

Puede cerrar la conexión Mysql con PDO ejecutando una consulta SQL. Cada usuario que puede conectarse al servidor Mysql puede KILL al menos su propio hilo:

/* * Close Mysql Connection (PDO) */ $pdo_mysql_close = function (PDO $connection) { $query = ''SHOW PROCESSLIST -- '' . uniqid(''pdo_mysql_close '', 1); $list = $connection->query($query)->fetchAll(PDO::FETCH_ASSOC); foreach ($list as $thread) { if ($thread[''Info''] === $query) { return $connection->query(''KILL '' . $thread[''Id'']); } } return false; }; $pdo_mysql_close($conn);

Documentación relacionada de Mysql:

Preguntas relacionadas con :

  • PHP PDO close ()? (Abril de 2012)

También puede limitar sus conexiones dentro de las funciones locales. De esta forma, la conexión se cierra tan pronto como se complete la función.


Use $link = null para informar a PDO que puede cerrar la conexión.

PHP: Conexiones de PDO y gestión de conexiones

Tras una conexión exitosa a la base de datos, se devuelve una instancia de la clase PDO a su secuencia de comandos. 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: haga esto asignando 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.


http://uk3.php.net/pdo

Por lo que veo, no pude ver de todos modos para cerrarlo en el manual php, y ejemplos de scripts que miré rápidamente nunca cerraron la conexión de ninguna manera con respecto a lo que pude ver.