Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/06/2006, 17h20   #1
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
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 :
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 :

Citation:
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.
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2006, 22h48   #2
Membre expérimenté
 
Développeur Web
Inscription : 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 : 538
Points : 538
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
__________________
Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure
bkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2006, 17h23   #3
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
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
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/07/2009, 14h30   #4
Membre régulier
 
Inscription : octobre 2007
Messages : 251
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2007
Messages : 251
Points : 87
Points : 87
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)
popovitch130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h51.


 
 
 
 
Partenaires

Hébergement Web