IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 MySQL Discussion :

mysql_pconnect() - limiter le nombre de connexions


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Par défaut mysql_pconnect() - limiter le nombre de connexions
    Bonjour à tous !

    Je travaille sur un site (je suis noob en php/mysql) qui doit permettre l'inscription et la connexion de membres, la recherche (via plusieurs critères) et l'affichage des profils des membres, ainsi que l'envoi de messages type "PM".

    J'ai lu sur un site qu'il fallait limiter au MAXIMUM les mysql_connect() car cette opération serait apparemment très lente côté mysql (ce site donnait un exemple : connexion 0,2sec, et simple requete 0,02sec, un truc du genre).

    Donc si j'admets que j'ai environ 3000 connectés en meme temps, c'est donc potentiellement 3000 connexions et 3000 requetes a un instant donné, ce qui risque donc d'etre très très mauvais pour les perfs.

    Pour l'instant (car j'ai pas réussi à faire mieux), je fais un mysql_connect() au début de chaque page qui permet de faire des requetes.

    J'ai tenté une autre technique (d'où le sujet de mon post) : mettre un mysql_pconnect() dans un script que j'appelle une seule fois, mais ca marche pas.

    En fait mon site est simple pour l'instant : une page index.php avec des iframes, ces iframes includant d'autres pages php, qui, elles, sont susceptibles d'utiliser la connexion à la BDD.

    Voilà, si certains d'entre vous ont des conseils, voire même une solution qui a fait ses preuves pour limiter à mort les demandes de connexion à la BDD (une seule connexion pour la durée de la session serait le pied, non ?), je suis preneur

    Merci à tous pour votre écoute et vos réponses

    Lideln

  2. #2
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Ingénieur DevOps
    Inscrit en
    Mai 2002
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 214
    Par défaut
    (une seule connexion pour la durée de la session serait le pied, non ?)
    Ah non ! ce ne serait pas le pied ! On déconseille l'utilisation de pconnect ! Mieux vaut utiliser connect et couper la connexion dès que les requêtes sont traitées.


    Chaque connexion active consomme des ressources. Si 2000 personnes sont en train de lire votre site, vous aurez 2000 connexions ouvertes . (Même si on suppose que vous avez répondu à la question "comment les fermer?" )

    Alors qu'avec des connexions qui se ferment après le chargement de la page vous n'aurez qu'une 30 de connexions simultanément ouverte.
    Alexandre Tranchant
    Ingénieur DevOps pour le Ministère de l'Écologie
    Retrouvez mes articles sur PHP et Symfony

  3. #3
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Ingénieur DevOps
    Inscrit en
    Mai 2002
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 214
    Par défaut
    N.B. : Certains logiciels comme Coldfusion gère une seule et même connexion à la base pour tout le site. Mais ce n'est pas possible en php. D'ailleurs ce n'est pas plus mal. Car en PHP/MySQL si une requête est lente, le moteur gérera par lui même pour afficher le résultats des requêtes provenant d'autres connexions.

    En ColdFusion/MySQL, Coldfusion gère tout en chaîne et donc Mysql, n'ayant qu'un "client connecté" il gère successivement requête par requête.. Bon après on peut paramétrer coldfusion, mais ce n'est pas aussi simple...
    Alexandre Tranchant
    Ingénieur DevOps pour le Ministère de l'Écologie
    Retrouvez mes articles sur PHP et Symfony

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Par défaut
    D'accord.

    Donc en gros vous me conseillez de continuer avec une connexion par requete ? Je pensais pourtant que ca dégraderait fortement les performances....
    (pour ce qui est de fermer la connexion, je suppose qu'il est possible de la fermer juste apres avoir recu la requete, avec un mysql_close() ?)

    Merci pour vos indications,

    Lideln

  5. #5
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Ingénieur DevOps
    Inscrit en
    Mai 2002
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 214
    Par défaut
    Oui, juste après avoir reçu et traité la requête avec les mysql_fetch*().
    Alexandre Tranchant
    Ingénieur DevOps pour le Ministère de l'Écologie
    Retrouvez mes articles sur PHP et Symfony

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 127
    Par défaut
    D'accord, donc je vais faire ca...
    Et par souci de curiosité, ca ne dégrade donc pas les performances si 3000 connectés font une requete au meme moment ?

    Merci de ton aide,

    Lideln

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C3PO][Struts2] Limiter le nombre de connexions à la base ?
    Par Bobsinglar dans le forum Hibernate
    Réponses: 5
    Dernier message: 10/06/2008, 14h25
  2. [ASE]Comment limiter le nombre de connexion
    Par log2n dans le forum Adaptive Server Enterprise
    Réponses: 1
    Dernier message: 22/09/2007, 11h57
  3. [DB2] Limiter le nombre de connexion persistantes
    Par silver.spike dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/06/2007, 09h28
  4. Limiter de nombre de connexions simultanées
    Par Drahu dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/09/2005, 11h43
  5. limiter le nombre de connexion VB-Oracle
    Par lonestar dans le forum Oracle
    Réponses: 12
    Dernier message: 05/08/2005, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo