PARTAGER UNE CONNEXION MySQL ENTRE PLUSIEURS SESSION [Résolu]

Messages postés
11
Date d'inscription
mardi 18 octobre 2005
Statut
Membre
Dernière intervention
9 avril 2010
- - Dernière réponse : sagat06
Messages postés
166
Date d'inscription
mercredi 27 juin 2007
Statut
Membre
Dernière intervention
31 mars 2014
- 9 déc. 2008 à 18:30
bonjour,

j'ai remarqué que sur certains hébergeur le nombre de connexions silmultées sont limitées.
donc j'aimerai savoir comment partager une connexion MySQL entre plusieurs session ?

en vous remerciant
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13
3
Merci
Salut,

En fait, on ne peut pas. Ca, c'est la réponse rapide.
En développant un peu, maintenant...

La durée de vie d'une connexion non persistante à MySQL est liée à la durée d'exécution du script PHP qui l'ouvre. Cela signifie que si un script PHP ouvre une connexion non persistante à MySQL et ne la ferme pas explicitement (avec mysql_close()), la connexion sera de toute façon fermée lors de la fin du script.

Un connexion persistante, quant à elle, n'est pas automatiquement fermée à la fin de l'exécution du script : elle reste ouverte (sauf bien sûr si l'on utilise mysql_close()). Elle peut alors être réutilisée par un autre script. Voici comment ça se passe alors :
- un premier script ouvre la connexion au serveur MySQL
- le premier script fait ce qu'il a à faire avec cette connexion
- le premier script se termine sans avoir fermé la connexion
- plus tard (ça peut être 1 ms après) un autre script demande à PHP de se connecter à MySQL
- si le serveur, le nom d'utilisateur et la base de données sont les mêmes, PHP réutilise la connexion qu'il avait gardée ouverte
- et ainsi de suite
Concrètement, on fait toujours l'ouverture avec mysql_connect(), c'est PHP qui décide s'il doit réellement se connecter ou bien utiliser une connexion existante.

Ca, c'est juste la base... Maintenant, il faut tenir compte du nombre de visiteurs et du temps d'exécution des scripts (qui sera difficilement mesurable, en tout cas jamais de manière fiable). Le serveur (la machine) est capable de faire plusieurs choses à la fois. Concrètement, plus d'un script PHP pourront être en cours d'exécution en même temps, utilisant alors (éventuellement) plusieurs connexions MySQL simultanément. Si trop de connexions sont maintenues ouvertes, le serveur MySQL refusera d'en créer de nouvelles.

Pour éviter ce genre de problème, il y a plusieurs choses possibles :
- utiliser des connexions non persistantes
- fermer les connexions explicitement avec mysql_close() aussitôt que la connexion n'est plus nécessaire.
- corollaire du point précédent : on peut essayer (quand c'est possible) de faire ses requêtes MySQL le plus tôt possible pour utiliser la connexion un temps le plus court possible

Si vraiment on ne s'en sort pas, qu'on a trop de trafic pour le nombre maximum de connexions MySQL autorisées :
<li>on change d'hébergeur (ou d'offre), parce que celui qu'on a n'est vraiment pas adapté</li><li>on peut aussi accorder une attention toute particulière à l'optimisation de :
<li>ses scripts PHP</li><li>l'architecture des tables et des index de la base de données</li></li>

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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 139 internautes nous ont dit merci ce mois-ci

Commenter la réponse de neigedhiver
Messages postés
11
Date d'inscription
mardi 18 octobre 2005
Statut
Membre
Dernière intervention
9 avril 2010
0
Merci
je te remercie neigedhiver, tu as été clair, net et précis.
Commenter la réponse de CleFac
Messages postés
166
Date d'inscription
mercredi 27 juin 2007
Statut
Membre
Dernière intervention
31 mars 2014
0
Merci
Je confirme, très précis même.
Merci.

Signé Sagat
Commenter la réponse de sagat06

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.