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

SQL Procédural MySQL Discussion :

PHP & MySQL : accès concurrent


Sujet :

SQL Procédural MySQL

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut PHP & MySQL : accès concurrent
    Bonjour,
    Il me vient à l'esprit une question concernant les accès concurrents et je n'arrive pas à trouver le réponse a ma question. Non pas qu'elle n'existe pas, mais il y a un point que je n'ai vu aborder explicitement nul part.

    Si j'ai un serveur MySQL capable de gérer 10 accès concurrents provenant d'un site web dont la fréqentation se fait par pics, comment gérer au niveau de mon code PHP pour ne pas avoir d'erreur ?

    je pense ré-écrire la fonction mysql_query() avec un algo un peu comparable à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function my_query($req)
    {
            while(!($resultat = mysql_query($req)))
            {
                    if ( mysql_errno() == 1040 )
                          usleep(10);
                    else
                          return false;
            }
            return $resultat;
    }
    La ou je ne sais pas ce qui va se passer, c'est pour le mysql_errno() qui d'apres l'aide PHP :

    Note that this function only returns the error code from the most recently executed MySQL function (not including mysql_error() and mysql_errno()), so if you want to use it, make sure you check the value before calling another MySQL function.
    MySQL étant indépendant de Apache, je me demande donc, si quelqun d'autre effectue une requette et génère une erreur entre le moment ou je fait le mysql_query() et le mysql_errno() , vais-je récupérer son erreur ou cela est-il géré pour chaque session ouverte de la bdd ?

    D'autre part, toujours dans l'optique de ne jamais avoir d'erreur d'execution d'une requette liée à un trop grand nombre d'accès, existe t-il des algorithmes plus performant pour gérer ce genre de problème ?

    Je me demandais également s'il existait un système de mutex permettant de gérer des connexions à la base de données entre session PHP et ainsi mettre en place un système de file d'attente.

    Merci de vos réponses.

  2. #2
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Points : 557
    Points
    557
    Par défaut
    la première chose qui est certaine est que mysql_errno() te retourne la dernière erreur rencontrée lors de TA connexion.

    Pour le reste, à méditer, je n'y ai pas encore réfléchi

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Merci ^^

    Je pense que je suis parti sur un fausse piste, parce que je ne sais finallement pas si un mysql_query peut retourner une erreur 1040 (trop de connexions), et je me demande si seul le mysql_connect ne serait pas capable de retourner cette erreure.
    J'avoue avoir du mal à trouver des documents expliquant en détail le tout ça.
    L'idéal serait p'tet encore de tester, mais ce genre de test n'est pas évident du tout a mettre en place lol

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 268
    Points : 128
    Points
    128
    Par défaut
    Je pense déjà qu'il vaut mieux passer par mysqli_query qui supporte les transaction (ou PDO mais c'est un peu plus lourd)

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

Discussions similaires

  1. Accès concurrents PHP MySQL
    Par pol2095 dans le forum Requêtes
    Réponses: 7
    Dernier message: 26/11/2014, 15h05
  2. mysql acces concurrents
    Par horkets dans le forum Accès aux données
    Réponses: 4
    Dernier message: 03/11/2008, 10h49
  3. Mysql acces concurrents
    Par horkets dans le forum Ruby on Rails
    Réponses: 0
    Dernier message: 31/10/2008, 09h56
  4. jsp mysql accès concurrents aux données
    Par elpeygey dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 26/04/2007, 14h03

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