Erreur mysql_connect(): Too many connections

Résolu
richarddum Messages postés 54 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 20 décembre 2005 - 6 juin 2005 à 17:56
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 6 juin 2005 à 19:37
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
A voir également:

6 réponses

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
6 juin 2005 à 18:29
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>
3
JeanPoldeux Messages postés 64 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 5 août 2005
6 juin 2005 à 18:12
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.
0
richarddum Messages postés 54 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 20 décembre 2005
6 juin 2005 à 18:57
Merci,

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

Richard
0
JeanPoldeux Messages postés 64 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 5 août 2005
6 juin 2005 à 19:19
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 .......
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
6 juin 2005 à 19:34
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>
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
6 juin 2005 à 19:37
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>
0
Rejoignez-nous