Erreur mysql_connect(): Too many connections [Résolu]

Signaler
Messages postés
54
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
20 décembre 2005
-
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
-
Bonjour,

Le message suivant "Warning: mysql_connect(): Too many connections in ..." apparait quelque fois sur mon site qui utilise une base de données.

A quoi celà est-il dû ?
Existe-il une solution pour intercepter l'erreur afin d'afficher un autre message.

Merci de votre aide.
erreur connexion

6 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



soit ton hébergeur est mauvais et donc son serveur est saturé, soit ton script n'est pas optimisé.



Bref tu dois ouvrir la connexion, faire tes requêtes, fermer la connexion et ensuite traiter les requêtes.



d'ailleurs l'exemple donné ci-dessus est un très mauvais exemple...



mysql_connect('hote','user','passe');

mysql_select_db('base');

$requete1=mysql_query('machin...');

$requete2=mysql_query('machin...');

$requete3=mysql_query('truc bidule');

mysql_close();



ensuite tu traites tes requêtes :



while($r=mysql_fetch_row($requete1))

{



}



etc...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
64
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
5 août 2005

As-tu fermé toutes les connexions au serveur MySQL que tu a ouvertes.



Chaque script qui utilise mysql_connect() devrait se terminer ou au moins contenir un appel à mysql_close().



Normalement, le système peut le gèrer automatiquement mais mieux vaut le prévoir.


Pour l'intercepter :



en utilisant @mysql_connect(); tu n'auras plus de message. Teste si la valeur de retour est null et affiche le message que tu veux.



connect = @mysql_connect("localhost","user","password");

if(empty(connect))

{

echo "Erreur de connexion au serveur MySQL";

}

else

{

//Tes traitements

//Fermeture de la connection

mysql_close(connect);

}



@++


<hr>

Every problem has a solution. The difficulty is to find it out.
Messages postés
54
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
20 décembre 2005

Merci,

C'est vrai que je n'utilise pas trop mysql_close, je vais corriger mes scripts

Richard
Messages postés
64
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
5 août 2005

Je ne vois pas en quoi l'exemple est très mauvais...



Si ce n'est une erreur de vocabulaire (traitements - requêtes)



De plus si les résultats d'une requête sont utilisés dans une autre,
ouvrir et fermer entre chaque requête == consommateur de ressources



Pour un champion de la politesse .......
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
J'ai pas dit "ouvrir et fermer entre chaque requête"



Ensuite ton code est très mauvais, pourquoi ?



bah parce que tu ouvres la connexion, tu fais les requêtes et tu
traites les requêtes la connexion ouverte ce qui entraîne plus
facilement un problème de max_user_connections, alors que le problème
posé est justement un problème de max_user_connections



Mettons que ta page avec ton code mette 3 secondes à se générer (c'est
possible si le code est crade ou le serveur surchargé) et que parmis
ces 3 secondes, il faut 500ms à mysql pour traiter les requêtes. Le
max_user_connections est mettons de 5.



dans ton cas, la connexion dure 3 secondes. Il suffit que 5 visiteurs
consultent une page en même temps (ou avec un décalage de 3 secondes
max) pour que le script tombe, bref ça nous fait même pas 5
utilisateurs maxi par seconde.



Dans l'autre cas, les requêtes durent 500 ms (c'est encore excessivement crade mais c'est volontaire)



Bref la connexion dure 500 ms, tu peux accueillir par seconde 10 visiteurs simultanés sans problème.



Ensuite si tes requêtent durent 100 ms ce qui est largement faisable, tu peux accueillir 100 visiteurs simultanés sans problème.



Enfin bon c'était juste pour la précision hein...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Ensuite je dois commenter le
connect = @mysql_connect("localhost","user","password");
if(empty(connect))



qui devrait être remplacé par



if(!@mysql_connect('localhost','user','password'))

{



}



ou t'as compris une de tes erreurs ?

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>