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

richarddum 54 Messages postés jeudi 22 avril 2004Date d'inscription 20 décembre 2005 Dernière intervention - 6 juin 2005 à 17:56 - Dernière réponse : cs_Anthomicro 9440 Messages postés mardi 9 octobre 2001Date d'inscription 13 avril 2007 Dernière intervention
- 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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_Anthomicro 9440 Messages postés mardi 9 octobre 2001Date d'inscription 13 avril 2007 Dernière intervention - 6 juin 2005 à 18:29
3
Merci
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>

Merci cs_Anthomicro 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 121 internautes ce mois-ci

Commenter la réponse de cs_Anthomicro
JeanPoldeux 64 Messages postés mardi 14 janvier 2003Date d'inscription 5 août 2005 Dernière intervention - 6 juin 2005 à 18:12
0
Merci
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.
Commenter la réponse de JeanPoldeux
richarddum 54 Messages postés jeudi 22 avril 2004Date d'inscription 20 décembre 2005 Dernière intervention - 6 juin 2005 à 18:57
0
Merci
Merci,

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

Richard
Commenter la réponse de richarddum
JeanPoldeux 64 Messages postés mardi 14 janvier 2003Date d'inscription 5 août 2005 Dernière intervention - 6 juin 2005 à 19:19
0
Merci
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 .......
Commenter la réponse de JeanPoldeux
cs_Anthomicro 9440 Messages postés mardi 9 octobre 2001Date d'inscription 13 avril 2007 Dernière intervention - 6 juin 2005 à 19:34
0
Merci
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>
Commenter la réponse de cs_Anthomicro
cs_Anthomicro 9440 Messages postés mardi 9 octobre 2001Date d'inscription 13 avril 2007 Dernière intervention - 6 juin 2005 à 19:37
0
Merci
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>
Commenter la réponse de cs_Anthomicro

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.