mysql_pconnect et mysql_close
Posté : 09 mai 2008, 15:11
Bonjour.
Je suis en train de m'intéresser de près aux connexions persistantes, et dans la documentation PHP, il est répété de nombreuses fois qu'une connexion persistante (donc ouverte avec mysql_pconnect) NE PEUT PAS ETRE FERMEE AVEC MYSQL_CLOSE().
Or, je me suis fait un petit script pour tester la chose et j'en arrive à la conclusion inverse (PHP 5.2.3 et MySQL 5.0.41). Voici le code :
Et voici le résultat à l'exécution sur mon serveur local (MAMP) :
Autrement dit, avant le mysql_close(), la requête est bien exécutée, après le mysql_close(), elle ne l'est plus. Ca veut pas dire que la connexion a été fermée par le mysql_close(), ça ? Et pourtant, c'est une connexion persistante ouverte avec mysql_pconnect().
Alors l'erreur est où ? Dans la doc, ou dans mon code ? En tout cas, la documentation ne signale visiblement pas que mysql_close() puisse fermer dans certains cas une connexion persistante.
J'en profite pour poser une autre question, du coup : si une connexion persistante est sensée ne pas pouvoir être fermée automatiquement à la fin d'un script ou par mysql_close(), comment on la ferme alors ?
Merci d'avance pour vos réponses
Je suis en train de m'intéresser de près aux connexions persistantes, et dans la documentation PHP, il est répété de nombreuses fois qu'une connexion persistante (donc ouverte avec mysql_pconnect) NE PEUT PAS ETRE FERMEE AVEC MYSQL_CLOSE().
Or, je me suis fait un petit script pour tester la chose et j'en arrive à la conclusion inverse (PHP 5.2.3 et MySQL 5.0.41). Voici le code :
Code : Tout sélectionner
mysql_pconnect("localhost:3306", "root", "root");
mysql_select_db("test");
$req = "SELECT * FROM toto";
$res = mysql_query($req);
echo "Nombre d'enregistrements trouvés : ".mysql_numrows($res);
mysql_close();
$req = "SELECT * FROM toto";
$res = mysql_query($req);
echo "Nombre d'enregistrements trouvés : ".mysql_numrows($res);
Code : Tout sélectionner
Nombre d'enregistrements trouvés : 7
Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /Users/louisbelval/Documents/MAMP/Exemples/Bases de donnees/Connexion persistante.php on line 21
Nombre d'enregistrements trouvés :
Alors l'erreur est où ? Dans la doc, ou dans mon code ? En tout cas, la documentation ne signale visiblement pas que mysql_close() puisse fermer dans certains cas une connexion persistante.
J'en profite pour poser une autre question, du coup : si une connexion persistante est sensée ne pas pouvoir être fermée automatiquement à la fin d'un script ou par mysql_close(), comment on la ferme alors ?
Merci d'avance pour vos réponses