Auteur Sujet: Connexion MySQL Simultanée : quézako?  (Lu 4198 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Just

  • Expert
  • ****
  • Messages: 924
    • AiN-IRC LE portail du 01 [Ain]!
Connexion MySQL Simultanée : quézako?
« le: 18 juin 2008 à 17:31:20 »
Bonjour,

Chez PHPNET nous trouvons la définition suivante pour "connexion MySQL simultanée":
Sur chacune de vos bases, vous ne pouvez établir qu'un nombre limité de connexions à Mysql. Ceci est surtout mis en place afin d'éviter que votre site ne perturbe les autres clients s'il recevait un nombre inhabituel de visiteurs pendant quelques minutes. Il faut savoir qu'une connexion Mysql ne prend que quelques millisecondes. Par conséquent sur une offre dont la limite est fixée à 3, il vous faudra en général plusieurs dizaines de visiteurs simultanément pour que cette limite soit dépassée.
Mais qu'appel t'on "connexion"?
L'ensemble connexion, requête et déconnexion?

On parle dans la définition de requête de quelques millisecondes mais on sait que certaines mettent plus de temps à être exécutée, soit de par leur complexité, soit de par leur mauvaise optimisation [dans certain "script tout fait"].
Ce qui relance aussi le débat : ne vaut-il mieux pas ouvrir/fermer la connexion MySQL à chaque requête plutôt que de laisser la connexion ouvertes et de faire toutes les requête avec parfois un traitement PHP entre deux?
[l'idéal étant bien sûr de regrouper les requêtes en un seul bloque, mais ce n'est pas toujours possible].

Il me semblerait intéressant que le staf PHPNET donne son avis sur le sujet qu'on sache clairement vers quoi s'orienter (ce qui pourrait avoir comme conclusion d'optimiser l'exploitation des serveurs mutualisés peut être).

D'avance merci.
« Modifié: 18 juin 2008 à 17:35:16 par Just »
Just OnMyOwn ... :B
"Be CoOl, KeEp CoOl, HaVe FuN!"
-
http://www.ain-irc.net/
http://www.funpart.net/

Hors ligne Just

  • Expert
  • ****
  • Messages: 924
    • AiN-IRC LE portail du 01 [Ain]!
Re : Connexion MySQL Simultanée : quézako?
« Réponse #1 le: 18 juin 2008 à 18:00:15 »
Une pierre à l'édifice.

Selon Thibaud de PHPNET:
Citer
Quand vous effectuez une requete dans un script php, cela donne ca :

>ouverture connexion tcp vers mysql
>authentification
>execution de la requete
>fermeture de la connexion

Ceci ne prend que quelques millisecondes en pratique.
Donc pour atteindre la limite, il faut avoir bien plus que Y personnes au meme moment sur le meme site (qui utilise la meme base).

Par "fermeture de la connexion" on entend "fermeture explicite"? Cad l'instruction "mysql_close()"?
Ou bien la "connexion" se ferme t'elle automatiquement à la fin d'une requête? (il ne me semble pas...)

Ce qui orienterais sur la piste du "connecter, requeter, fermer" et ce pour chaque requête.
Non?
Just OnMyOwn ... :B
"Be CoOl, KeEp CoOl, HaVe FuN!"
-
http://www.ain-irc.net/
http://www.funpart.net/

Hors ligne thibaud

  • VIP
  • *****
  • Messages: 3 909
    • http://www.phpnet.org/
Re : Connexion MySQL Simultanée : quézako?
« Réponse #2 le: 18 juin 2008 à 18:13:20 »
la connexion se ferme automatiquement a la fin de l'execution du script PHP.
Thibaud GRANGIER
Division Technique mutualise-dedie
PHPNET

Hors ligne maverick78

  • VIP
  • *****
  • Messages: 2 601
    • http://www.clan-ck.com
Re : Connexion MySQL Simultanée : quézako?
« Réponse #3 le: 18 juin 2008 à 18:38:06 »
c'est pas specialement conseillé de faire une ouverture fermeture à chaque requête puisque c'est solliciter trois fois le serveur pour une requete contre une seule fois avec une ouverture fermeture globale!
La force est dans la céréale
Clan cereal-killer : http://www.clan-ck.com

Ne te demande pas ce que ton pays peut faire pour toi mais plutôt ce que tu peux faire pour ton pays...(JF Kennedy)

Hors ligne Just

  • Expert
  • ****
  • Messages: 924
    • AiN-IRC LE portail du 01 [Ain]!
Re : Connexion MySQL Simultanée : quézako?
« Réponse #4 le: 18 juin 2008 à 18:49:58 »
OK! Merci pour ces réponses.

L'idéal serait un timer qui permettrait de fermer une connexion persistante au bout de temps de millisecondes... mais les timer en PHP... hem :/.

Actuellement j'ai des requêtes qui s'exécutent en début, en milieu et en fin de script dans divers fichiers inclus et/ou exécuté à divers moment du script.
Ce qui laisse donc parfois un "laps de temps" entre deux requêtes.

Des idées pour optimiser les connexions SQL svp?

NB : je passe par un objet que j'appel "pont SQL" pour exécuter mes requêtes SQL, dérivées du script que tu m'avais filé, maverick78, il y a de ça déjà quelques année. Cet objet se charge d'ouvrir la connexion s'il n'y en a pas d'active.
Just OnMyOwn ... :B
"Be CoOl, KeEp CoOl, HaVe FuN!"
-
http://www.ain-irc.net/
http://www.funpart.net/

Hors ligne maverick78

  • VIP
  • *****
  • Messages: 2 601
    • http://www.clan-ck.com
Re : Connexion MySQL Simultanée : quézako?
« Réponse #5 le: 18 juin 2008 à 20:49:42 »
Y'a pas grand chose a faire, si ce n'est grouper toutes les requêtes dans un coin et faire le traitement après. Mais c'est pas toujours faisable!
La force est dans la céréale
Clan cereal-killer : http://www.clan-ck.com

Ne te demande pas ce que ton pays peut faire pour toi mais plutôt ce que tu peux faire pour ton pays...(JF Kennedy)

Hors ligne Just

  • Expert
  • ****
  • Messages: 924
    • AiN-IRC LE portail du 01 [Ain]!
Re : Connexion MySQL Simultanée : quézako?
« Réponse #6 le: 28 juillet 2008 à 11:16:56 »
Salut,

Je reviens à la charge et ce afin d'être sûr et certain de bien comprendre.

Si j'ai une limite de trois connexion MySQL simultannée,
que dans un script PHP j'initialise au début du script une connexion MySQL et ne la ferme qu'à la fin (on admet que la connexion ne soit pas fermé par timeout durant l'exécution dudit script).

Tout le temps qu'un utilisateur accède au script (quelquesoit le nombre de requêtes effectuées dans ce dernier, voir même si on en exécute aucune) j'ai une connexion MySQL de "bouffée" donc plus que deux de disponible pour les autres utilisateurs, c'est bien cela?
Cad que ce n'est pas uniquement quand j'exécute une requête que cette connexion est "bouffée" mais bien tout le temps que je conserve ouvert ma connexion MySQL (donc dans mon exemple : tout le temps d'exécution du script)?

Merci d'avance pour cette précision qui m'est très importante :).
Just OnMyOwn ... :B
"Be CoOl, KeEp CoOl, HaVe FuN!"
-
http://www.ain-irc.net/
http://www.funpart.net/