Faire les connexions SQL ouvert avec PDO en PHP doivent être fermés
Quand j'ouvre une connexion MySQL en PHP de PHP intégré dans les fonctions de MySQL, je ne les suivants:
$link = mysql_connect($servername, $username, $password);
mysql_select_db($dbname);
//queries etcetera
mysql_close($link);
Quand j'ouvre une connexion avec PDO, il ressemble à ceci:
$link = new PDO("mysql:dbname=$dbname;host=$servername",$username,$password);
//prepare statements, perform queries
Dois-je fermer explicitement la connexion, comme je le fais avec mysql_connect()
et mysql_close()
? Si non, en quoi PHP sais quand je suis fait avec ma connexion?
TIA.
Vous devez vous connecter pour publier un commentaire.
Utilisation
$link = null
laisser AOP sais qu'il peut fermer la connexion.PHP: PDO Connexions & Gestion de la Connexion
mysql_close()
n'est pas utilisé à la fin du script (ou dans le__destruct()
de votre classe db)? Dans le manuel, il sonne comme lorsque l'objet PDO est détruite, la connexion se ferme aussi. Important en raison de ceci: stackoverflow.com/a/2960656/372654. Semble donc, à partir de l'AOP code source, mais...unset()
l'objet PDO au lieu de mettre à NULL? J'ai vraiment envie de quelques éclaircissements sur ce!AOP ne offrent pas une telle fonction sur son propre. Les connexions via PDO sont indirectement gérés par l'AOP objets refcount en PHP.
Mais parfois, vous voulez fermer la connexion de toute façon, quel que soit le refcount. Soit parce que vous ne pouvez pas le contrôler, en ont besoin pour des fins de test ou similaire.
Vous pouvez fermer la Mysql connexion avec PDO par l'exécution d'une requête SQL. Chaque utilisateur capable de se connecter au serveur Mysql est capable de
KILL
au moins son propre thread:Liées Documentation De Mysql:
SHOW PROCESSLIST
SyntaxeKILL
SyntaxeLiées Stackoverflow Questions:
$connection->query('KILL CONNECTION_ID();');
Testé contre mysql 5.7 sur debian à partir d'un local mysql en ligne de commande client et de workbench sur un poste de travail windows. Selon dev.mysql.com/doc/refman/5.5/en/show-processlist.html le SHOW PROCESSLIST colonneId
est le "...identifiant de connexion. C'est le même type de valeur affichée dans la colonne ID de la INFORMATION_SCHEMA PROCESSLIST table et retourné par leCONNECTION_ID()
fonction." (note: je suis en commentant une réponse qui est près de 6 ans)Lorsque le script PHP a terminé l'exécution, toutes les connexions sont fermées. Aussi, vous n'avez pas explicitement à fermer votre connexion avec
mysql_close()
.Vous pouvez également limiter vos connexions à l'intérieur des fonctions locales. De cette façon, la connexion est fermée dès que la fonction est terminée.
Bien voir que la
$link
pour l'AOP est attribuée à un objet, PHP serait le définir comme nulle dès que le script s'exécute, de sorte qu'il n'est plus un objet. Par conséquent, vous pourriez faire:http://uk3.php.net/pdo
De ce que je comprends, je ne pouvais pas le voir de toute façon à fermer dans le manuel php, et des exemples de scripts j'ai rapidement regardé jamais fermé la connexion de toute façon de ce que j'ai pu voir.