je ne comprends pas le comportement de mysql_connect:
la doc de http://fr2.php.net/manual/fr/function.mysql-connect.php dit :
Si un second appel à mysql_connect() est fait avec les mêmes
arguments, PHP ne va pas ouvrir une nouvelle connexion, mais va
retourner l'identifiant de la connexion déjà ouverte.
c'est bien ce qui me semblait, ca m'évite de devoir gérer le pool de cnx.
Mon code fait ceci :
function C_MysqlDb($host, $user, $pwd, $database) {
Bib_log(FOUNDATION_LOG, "Class C_MysqlDb connecting.");
if ($this->dbLink == FALSE){
Bib_log(SQL_LOG, "Error while Connecting : " . mysql_error());
}
Bib_log(FOUNDATION_LOG, "Class C_MysqlDb connected.");
$sel = @mysql_select_db($database);
if ($sel == FALSE){
Bib_log(SQL_LOG, "Error while selecting database : $database " .
mysql_error());
}
Bib_log(SQL_LOG, "Selection of the database $database answered : " .
mysql_error());
echo $this->dbLink;
}
Evidemment, les paramètres $host, $user, $pwd ne changent pas donc en
toute logique, il ne devrait pas établir de nouvelle connexion.
Mais bon, je me connecte sur mon serveur :
show status;
bla blah
Connections 20 ----------> il si je fais un refresh de ma page qui
recree un objet C_MysqlDb et donc recree une cnx (enfin non normalement
mais bon :) )
20 devient 21 .
Je me suis aperçu de cela qd mon appli ne répondait plus et que j'avais
191 cnx.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Thibaut Allender
je ne comprends pas le comportement de mysql_connect: la doc de http://fr2.php.net/manual/fr/function.mysql-connect.php dit :
Si un second appel à mysql_connect() est fait avec les mêmes arguments, PHP ne va pas ouvrir une nouvelle connexion, mais va retourner l'identifiant de la connexion déjà ouverte.
dans le *meme script*
faut-il également rappeler les connexions sont fermées de façon implicite en fin d'execution du script ? non, quand même pas, on le lit dans la doc citées ;)
" Le lien sera fermé automatiquement dès que l'exécution du script sera terminée, à moins d'être fermé explicitement avec mysql_close()."
sauf evidemment si on utilise une connexion persistante
Connections 20 ----------> il si je fais un refresh de ma page qui recree un objet C_MysqlDb et donc recree une cnx (enfin non normalement mais bon :) ) 20 devient 21 .
refresh de la page, donc nouvelle execution du script donc ouverture d'une nouvelle connexion ceci dit, la précédente aurait effectivement dûe être fermée à la fin du script
le script se plante ? il tourne en boucle ? le serveur est configuré pour utiliser des connexion persistantes par défaut ?
il serait peut-être bon de forcer un petit mysql_close(); même si a priori ça n'est pas nécessaire en temps normal
je ne comprends pas le comportement de mysql_connect:
la doc de http://fr2.php.net/manual/fr/function.mysql-connect.php dit :
Si un second appel à mysql_connect() est fait avec les mêmes arguments,
PHP ne va pas ouvrir une nouvelle connexion, mais va retourner
l'identifiant de la connexion déjà ouverte.
dans le *meme script*
faut-il également rappeler les connexions sont fermées de façon
implicite en fin d'execution du script ?
non, quand même pas, on le lit dans la doc citées ;)
" Le lien sera fermé automatiquement dès que l'exécution du script sera
terminée, à moins d'être fermé explicitement avec mysql_close()."
sauf evidemment si on utilise une connexion persistante
Connections 20 ----------> il si je fais un refresh de ma page qui
recree un objet C_MysqlDb et donc recree une cnx (enfin non normalement
mais bon :) )
20 devient 21 .
refresh de la page, donc nouvelle execution du script donc ouverture
d'une nouvelle connexion
ceci dit, la précédente aurait effectivement dûe être fermée à la fin du
script
le script se plante ? il tourne en boucle ?
le serveur est configuré pour utiliser des connexion persistantes par
défaut ?
il serait peut-être bon de forcer un petit mysql_close(); même si a
priori ça n'est pas nécessaire en temps normal
je ne comprends pas le comportement de mysql_connect: la doc de http://fr2.php.net/manual/fr/function.mysql-connect.php dit :
Si un second appel à mysql_connect() est fait avec les mêmes arguments, PHP ne va pas ouvrir une nouvelle connexion, mais va retourner l'identifiant de la connexion déjà ouverte.
dans le *meme script*
faut-il également rappeler les connexions sont fermées de façon implicite en fin d'execution du script ? non, quand même pas, on le lit dans la doc citées ;)
" Le lien sera fermé automatiquement dès que l'exécution du script sera terminée, à moins d'être fermé explicitement avec mysql_close()."
sauf evidemment si on utilise une connexion persistante
Connections 20 ----------> il si je fais un refresh de ma page qui recree un objet C_MysqlDb et donc recree une cnx (enfin non normalement mais bon :) ) 20 devient 21 .
refresh de la page, donc nouvelle execution du script donc ouverture d'une nouvelle connexion ceci dit, la précédente aurait effectivement dûe être fermée à la fin du script
le script se plante ? il tourne en boucle ? le serveur est configuré pour utiliser des connexion persistantes par défaut ?
il serait peut-être bon de forcer un petit mysql_close(); même si a priori ça n'est pas nécessaire en temps normal
faut-il également rappeler les connexions sont fermées de façon implicite en fin d'execution du script ? non, quand même pas, on le lit dans la doc citées ;) C'est précisemment ce que je teste :)
refresh de la page, donc nouvelle execution du script donc ouverture d'une nouvelle connexion ceci dit, la précédente aurait effectivement dûe être fermée à la fin du script Exactement ce que je me suis dit, étrange ...
le script se plante ? il tourne en boucle ? non, le nbre de cnx monte c'est tout.
le serveur est configuré pour utiliser des connexion persistantes par défaut ? Pas que je sache mais je vais vérifier..
il serait peut-être bon de forcer un petit mysql_close(); même si a priori ça n'est pas nécessaire en temps normal
J'aime pas ce raisonnement: "on le fait dans le doute" : c'est pas de la
magie noire ce truc, ca doit avoir un comportement qui suit la doc ou alors c'est un bug.
Je vais continuer mes recherches et merci pour ta contribution :)
cordialement
dans le *meme script* oui, à des fins de tests
faut-il également rappeler les connexions sont fermées de façon
implicite en fin d'execution du script ?
non, quand même pas, on le lit dans la doc citées ;)
C'est précisemment ce que je teste :)
refresh de la page, donc nouvelle execution du script donc ouverture
d'une nouvelle connexion
ceci dit, la précédente aurait effectivement dûe être fermée à la fin du
script
Exactement ce que je me suis dit, étrange ...
le script se plante ? il tourne en boucle ? non, le nbre de cnx monte c'est tout.
le serveur est configuré pour utiliser des connexion persistantes par
défaut ?
Pas que je sache mais je vais vérifier..
il serait peut-être bon de forcer un petit mysql_close(); même si a
priori ça n'est pas nécessaire en temps normal
J'aime pas ce raisonnement: "on le fait dans le doute" : c'est pas de la
magie noire ce truc, ca doit avoir un comportement qui suit la doc ou
alors c'est un bug.
Je vais continuer mes recherches et merci pour ta contribution :)
faut-il également rappeler les connexions sont fermées de façon implicite en fin d'execution du script ? non, quand même pas, on le lit dans la doc citées ;) C'est précisemment ce que je teste :)
refresh de la page, donc nouvelle execution du script donc ouverture d'une nouvelle connexion ceci dit, la précédente aurait effectivement dûe être fermée à la fin du script Exactement ce que je me suis dit, étrange ...
le script se plante ? il tourne en boucle ? non, le nbre de cnx monte c'est tout.
le serveur est configuré pour utiliser des connexion persistantes par défaut ? Pas que je sache mais je vais vérifier..
il serait peut-être bon de forcer un petit mysql_close(); même si a priori ça n'est pas nécessaire en temps normal
J'aime pas ce raisonnement: "on le fait dans le doute" : c'est pas de la
magie noire ce truc, ca doit avoir un comportement qui suit la doc ou alors c'est un bug.
Je vais continuer mes recherches et merci pour ta contribution :)
cordialement
Thibaut Allender
le serveur est configuré pour utiliser des connexion persistantes par défaut ?
Pas que je sache mais je vais vérifier..
un petit phpinfo() et un coup d'oeil à la rubrique mysql devrait te renseigner là dessus
J'aime pas ce raisonnement: "on le fait dans le doute" : c'est pas de la magie noire ce truc, ca doit avoir un comportement qui suit la doc ou alors c'est un bug.
moi non plus, mais en attendant de trouver la vraie source du problème, c'est toujours mieux que d'engorger le serveur mysql
le serveur est configuré pour utiliser des connexion persistantes par
défaut ?
Pas que je sache mais je vais vérifier..
un petit phpinfo() et un coup d'oeil à la rubrique mysql devrait te
renseigner là dessus
J'aime pas ce raisonnement: "on le fait dans le doute" : c'est pas de la
magie noire ce truc, ca doit avoir un comportement qui suit la doc ou
alors c'est un bug.
moi non plus, mais en attendant de trouver la vraie source du problème,
c'est toujours mieux que d'engorger le serveur mysql
le serveur est configuré pour utiliser des connexion persistantes par défaut ?
Pas que je sache mais je vais vérifier..
un petit phpinfo() et un coup d'oeil à la rubrique mysql devrait te renseigner là dessus
J'aime pas ce raisonnement: "on le fait dans le doute" : c'est pas de la magie noire ce truc, ca doit avoir un comportement qui suit la doc ou alors c'est un bug.
moi non plus, mais en attendant de trouver la vraie source du problème, c'est toujours mieux que d'engorger le serveur mysql