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

CleFac 11 Messages postés mardi 18 octobre 2005Date d'inscription 9 avril 2010 Dernière intervention - 25 mars 2008 à 17:35 - Dernière réponse : sagat06 166 Messages postés mercredi 27 juin 2007Date d'inscription 31 mars 2014 Dernière intervention
- 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
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 25 mars 2008 à 18:20
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

Merci neigedhiver 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de neigedhiver
CleFac 11 Messages postés mardi 18 octobre 2005Date d'inscription 9 avril 2010 Dernière intervention - 25 mars 2008 à 23:03
0
Merci
je te remercie neigedhiver, tu as été clair, net et précis.
Commenter la réponse de CleFac
sagat06 166 Messages postés mercredi 27 juin 2007Date d'inscription 31 mars 2014 Dernière intervention - 9 déc. 2008 à 18:30
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.